Delivering metrics from hosts outside Yandex Cloud
To deliver metrics to Yandex Monitoring from hosts outside Yandex Cloud:
-
Create an authorized service account key to access the folder that will receive metrics.
-
Install and configure Yandex Unified Agent to collect and send metrics.
You can also use this method to send metrics from Yandex Cloud VMs without a linked service account.
Warning
System metrics can only be delivered from Linux hosts on the AMD platform. Windows and macOS support is planned for upcoming Yandex Unified Agent releases.
Delivering metrics using an authorized key
-
Set up a service account to use for writing metrics to Yandex Monitoring and create an authorized key.
-
Create a service account in the folder for metric storage and assign it the
monitoring.editor
role. -
Create an authorized key for your new service account using YC CLI:
yc iam key create --service-account-id <service_account_ID> --output jwt_params.json
Where
--service-account-id
is the ID of the service account you created.You can find more ways to create authorized keys in Creating an authorized key.
-
Deliver the jwt_params.json file with the authorized key parameters to the host where Unified Agent will be installed.
Example of
jwt_params.json
:{ "id": "ajt4yut8vb12********", "service_account_id": "ajeo5pert10z********", "created_at": "2024-05-15T07:10:32.585653195Z", "key_algorithm": "RSA_2048", "public_key": "-----BEGIN PUBLIC KEY-----\nMD...", "private_key": "-----BEGIN PRIVATE KEY-----\nMI..." }
-
-
Install and configure Yandex Unified Agent on the host:
-
Install Docker
. -
Create a file named config.yml in your home directory.
config.yml:
status: port: "16241" host: null agent_log: priority: NOTICE storages: - name: main plugin: fs config: directory: /var/lib/yandex/unified_agent/main max_partition_size: 100mb max_segment_size: 10mb channels: - name: cloud_monitoring channel: pipe: - storage_ref: name: main output: plugin: yc_metrics config: url: https://monitoring.api.cloud.yandex.net/monitoring/v2/data/write folder_id: "$FOLDER_ID" iam: jwt: file: "/etc/yandex/unified_agent/jwt_params.json" routes: - input: plugin: linux_metrics config: namespace: sys proc_directory: /ua_proc sys_directory: /sys resources: cpu: basic memory: basic network: basic storage: basic io: basic kernel: basic channel: channel_ref: name: cloud_monitoring - input: plugin: agent_metrics config: namespace: ua channel: pipe: - filter: plugin: filter_metrics config: match: "{scope=health}" channel_ref: name: cloud_monitoring import: - /etc/yandex/unified_agent/conf.d/*.yml
Where:
$FOLDER_ID
: ID of the folder you want to write metrics to.iam.jwt.file
: Path to the file with JWT parameters.
-
Install Unified Agent by running the following command in your home directory:
docker run \ -p 16241:16241 -it -d --uts=host \ --name unified-agent-$(echo $(cat /proc/sys/kernel/random/uuid) | cut -d '-' -f1) \ -v /proc:/ua_proc \ -v $(pwd)/config.yml:/etc/yandex/unified_agent/config.yml \ -v $(pwd)/jwt_params.json:/etc/yandex/unified_agent/jwt_params.json \ -e PROC_DIRECTORY=/ua_proc \ -e FOLDER_ID=a1bs81qpemb4******** \ --entrypoint="unified_agent" \ cr.yandex/yc/unified-agent
You can find more ways to install the agent in Installing and updating Yandex Unified Agent.
-
-
Make sure Yandex Monitoring receives the metrics:
-
On the Yandex Monitoring home page
, go to Metrics. -
In the query string, specify the following:
- Folder for storing collected metrics.
service=custom
label value.- Metric name prefixed with
sys
.
-