PrometheusおよびNode Importer用のサービスを作成しようとしています。
両方の .service ファイルの内容はほぼ同じです。
#!/bin/sh -
# /etc/systemd/system/node_exporter.service
[Unit]
Description=Node Exporter
[Service]
User=prometheus
RemainAfterExit=true
ExecStart=/usr/bin/node_exporter
私の問題は、サービスを開始できないことです。次のエラーが発生します。
● node_exporter.service - Node Exporter
Loaded: loaded (/etc/systemd/system/node_exporter.service; enabled; vendor preset: enabled)
Active: active (exited) (Result: exit-code) since Mon 2017-01-30 16:00:31 MST; 7min ago
Process: 18693 ExecStart=/usr/bin/node_exporter (code=exited, status=203/EXEC)
Main PID: 18693 (code=exited, status=203/EXEC)
ユーザーを変更し、パスが正しいことを確認するなど、さまざまな繰り返しを試しました。数時間調整し、インターネットを検索し、逆追跡した後は、生涯にわたって正しく機能できません。 Upstartのガイドがありますが、Upstartを依存関係として使用せずに16.04で動作するには、このガイドが必要です。
答え1
これで問題を解決しました。
ノードのエクスポート:
ExecStart=/bin/sh -c '/usr/local/bin/node_exporter'
MySQL_輸出者:
=/bin/sh -c '/usr/local/bin/mysqld_exporter \
--config.my-cnf /etc/.mysqld_exporter.cnf \
--collect.global_status \
--collect.info_schema.innodb_metrics \
--collect.auto_increment.columns \
--collect.info_schema.processlist \
--collect.binlog_size \
--collect.info_schema.tablestats \
--collect.global_variables \
--collect.info_schema.query_response_time \
--collect.info_schema.userstats \
--collect.info_schema.tables \
--collect.perf_schema.tablelocks \
--collect.perf_schema.file_events \
--collect.perf_schema.eventswaits \
--collect.perf_schema.indexiowaits \
--collect.perf_schema.tableiowaits \
--collect.slave_status \
--web.listen-address=0.0.0.0:9104'
完全なコマンドは次のとおりです。
sudo vim /etc/systemd/system/mysql_exporter.service
コンテンツmysql_exporter.service
:
[Unit]
Description=Prometheus MySQL Exporter
After=network.target
[Service]
Type=simple
Restart=always
ExecStart=/bin/sh -c '/usr/local/bin/mysqld_exporter \
--config.my-cnf /etc/.mysqld_exporter.cnf \
--collect.global_status \
--collect.info_schema.innodb_metrics \
--collect.auto_increment.columns \
--collect.info_schema.processlist \
--collect.binlog_size \
--collect.info_schema.tablestats \
--collect.global_variables \
--collect.info_schema.query_response_time \
--collect.info_schema.userstats \
--collect.info_schema.tables \
--collect.perf_schema.tablelocks \
--collect.perf_schema.file_events \
--collect.perf_schema.eventswaits \
--collect.perf_schema.indexiowaits \
--collect.perf_schema.tableiowaits \
--collect.slave_status \
--web.listen-address=0.0.0.0:9104'
[Install]
WantedBy=multi-user.target
ノードのエクスポート:
sudo vim /etc/systemd/system/node_exporter.service
コンテンツnode_exporter
:
[Unit]
Description=Prometheus Node Exporter
After=network.target
User=prometheus
Group=prometheus
[Service]
Type=simple
Restart=always
ExecStart=/bin/sh -c '/usr/local/bin/node_exporter'
[Install]
WantedBy=multi-user.target
答え2
node_exporter パスが間違っているようです。
ExecStart=/usr/bin/node_exporter
Ubuntu 16.04に別のパスがあります
~# cat /etc/issue
Ubuntu 16.04.3 LTS \n \l
~# which node_exporter
/usr/sbin/node_exporter
これが問題の原因ではない場合は、次のように/var/log/syslog
失敗の理由を表示する必要があります。
Oct 20 12:30:30 prom systemd[8848]: node_exporter.service: Failed at step EXEC spawning /usr/bin/node_exporter: No such file or directory
Oct 20 12:30:30 prom systemd[1]: node_exporter.service: Main process exited, code=exited, status=203/EXEC
Oct 20 12:30:30 prom systemd[1]: node_exporter.service: Unit entered failed state.
Oct 20 12:30:30 prom systemd[1]: node_exporter.service: Failed with result 'exit-code'.
Oct 20 12:30:30 prom systemd[1]: node_exporter.service: Service hold-off time over, scheduling restart.
Oct 20 12:30:30 prom systemd[1]: Stopped Prometheus exporter for machine metrics, written in Go with pluggable metric collectors..
Oct 20 12:30:30 prom systemd[1]: Started Prometheus exporter for machine metrics, written in Go with pluggable metric collectors..
答え3
渡したコマンドを手動で実行して、実行されていることをExecStart
確認してください。
また、無効なプラットフォーム用のバイナリをダウンロード/使用したため、203エラーが発生しました。私は「Linux」の代わりに「Darwin」を使います。
Process: 20340 ExecStart=/usr/local/bin/node_exporter (code=exited, status=203/EXEC)
$ ls -lah /usr/local/bin/node_exporter
-rwxr-xr-x 1 node_exporter node_exporter 12M Jan 16 16:36 /usr/local/bin/node_exporter
$ /usr/local/bin/node_exporter
-bash: /usr/local/bin/node_exporter: cannot execute binary file: Exec format error
答え4
このエラーが発生します。 @Saexで解決しました。
このエラーが発生した理由は、node_exporter-1.2.2.darwin-amd64.tar.gz
代わりに間違ったパッケージをダウンロードしたためです。node_exporter-1.2.2.linux-amd64.tar.gz
node_exporter.service - Node Exporter
Loaded: loaded (/etc/systemd/system/node_exporter.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Wed 2021-08-18 11:22:44 UTC; 17s ago
Main PID: 3830 (code=exited, status=203/EXEC)
Aug 18 11:22:44 ip-10-0-101-80 systemd[1]: Started Node Exporter.
Aug 18 11:22:44 ip-10-0-101-80 systemd[3830]: node_exporter.service: Failed to execute command: Exec format error
Aug 18 11:22:44 ip-10-0-101-80 systemd[3830]: node_exporter.service: Failed at step EXEC spawning /opt/node_exporter/node_exporter: Exec>
Aug 18 11:22:44 ip-10-0-101-80 systemd[1]: node_exporter.service: Main process exited, code=exited, status=203/EXEC
Aug 18 11:22:44 ip-10-0-101-80 systemd[1]: node_exporter.service: Failed with result 'exit-code'.