Table of Contents
Prometheus インストール
ダウンロードページ からPrometheusをダウンロードして解凍します
$ wget https://github.com/prometheus/prometheus/releases/download/v2.13.0/prometheus-2.13.0.linux-amd64.tar.gz
$ tar xvfz prometheus-2.13.0.linux-amd64.tar.gz
$ cd prometheus-2.13.0.linux-amd64/
バイナリ起動するだけでとりあえず動きはします デフォルトでは9090PortをBindしますので、EC2上に構築時は SecurityGroup に気をつけてください
./prometheus
簡単すぎますね OSSは導入難易度の低さは非常に重要な要素だと再認識
Prometheus daemon化
systemctl 用の設定を作成します
パスはそれぞれの環境に合わせて設定してください
$ sudo vim /usr/lib/systemd/system/prometheus.service
[Unit]
Description=Prometheus
Documentation=https://prometheus.io/docs/introduction/overview/
After=network-online.target
[Service]
Type=simple
ExecStart=/usr/local/src/prometheus/prometheus \
--config.file=/usr/local/src/prometheus/prometheus.yml
Restart=always
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
自動起動設定と実際の起動
$ sudo systemctl daemon-reload
$ sudo systemctl enable prometheus.service
$ sudo systemctl start prometheus.service
ひとまずこれでPrometheusのリソースを集めれる状況になりました。
これをGrafanaに表示します。
Grafana インストール
Download Grafanaを参考にインストールします
$ curl https://dl.grafana.com/oss/release/grafana-6.4.2-1.x86_64.rpm -O
$ sudo yum localinstall grafana-6.4.2-1.x86_64.rpm
直接yum installしても大丈夫です
$ sudo yum install https://dl.grafana.com/oss/release/grafana-6.4.2-1.x86_64.rpm
systemctl設定も作成してくれていますので起動するだけで良いです
$ sudo systemctl start grafana-server.service
デフォルトでは3000番PortをBindするようになってます
見る頻度が高い画面だと思うのでNginxを前段に立てるようにします
behind_proxyの手順で進めます
Nginx reverse proxy設定
NginxはAmazonが提供しているものを利用します
$ sudo amazon-linux-extras install nginx1.12
HTTPS化する為、Let's EnctyptかALBを噛ますか迷ったのですが、 料金を増やしたく無いのでLet's Enctypt対応することにしました
まずは amazon-linux-extras 経由で epel repository追加して certbot 入手します
$ sudo amazon-linux-extras install epel
$ sudo yum install certbot python2-certbot-nginx
SecurityGroupにて接続できるIPを制限してるのでDNS経由での認証を行います
hoge.seike460.com
は適宜読み替えてください
$ sudo certbot certonly --preferred-challenges dns-01 --authenticator manual --domain hoge.seike460.com
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator manual, Installer None
Obtaining a new certificate
Performing the following challenges:
dns-01 challenge for hoge.seike460.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NOTE: The IP of this machine will be publicly logged as having requested this
certificate. If you're running certbot in manual mode on a machine that is not
your server, please ensure you're okay with that.
Are you OK with your IP being logged?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: y
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please deploy a DNS TXT record under the name
_acme-challenge.hoge.seike460.com with the following value: !!! このTXTレコードを !!!
XxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxX !!! これをValueで作成 !!!
Before continuing, verify the record is deployed. !!! ここでDNS設定を行った後にEnter !!!
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue
Waiting for verification...
Cleaning up challenges
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/hoge.seike460.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/hoge.seike460.com/privkey.pem
Your cert will expire on 2019-06-15. To obtain a new or tweaked
version of this certificate in the future, simply run certbot
again. To non-interactively renew *all* of your certificates, run
"certbot renew"
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
よく見ると寄付リンクあったので寄付してみました 感謝を伝えたい方は是非 ↓ Donating to ISRG / Let's Encrypt
この証明書をありがたく使います
$ sudo vim /etc/nginx/nginx.conf
画像などはキャッシュさせながら80 -> 443にリダイレクトしてます
http {
~ 省略 ~
server {
listen 80;
server_name hoge.seike460.com
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2 default_server;
server_name hoge.seike460.com;
root /usr/share/nginx/html;
ssl_certificate "/etc/letsencrypt/live/hoge.seike460.com/fullchain.pem";
ssl_certificate_key "/etc/letsencrypt/live/hoge.seike460.com/privkey.pem";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1.2;
include /etc/nginx/default.d/*.conf;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $host;
location ~* .(ico|jpg|png|gif|jpeg|css|swf|js|woff)$ {
access_log off;
gzip_static on;
gzip_comp_level 5;
expires 1d;
add_header Cache-Control private;
try_files $uri @proxy;
}
location @proxy {
proxy_pass http://localhost:3000;
}
location ~ {
proxy_pass http://localhost:3000;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
最初のログインアカウントは admin /admin になってて最初のログインを行うと パスワード変更を求められます
認証系のドキュメントをご参照ください
まずは DataSource の選択を求められるのでもちろんPrometheusを選びます
Prometheusはlocalhost:9000に立ててたので指定すると連携が開始されます
無事可視化できる様になりました。
とても強力なツールなので、この監視ツールで安眠を手に入れましょう