cat > /etc/yum.repos.d/prometheus.repo <<-GRAFANA
[grafana]
name=grafana
baseurl=https://packagecloud.io/grafana/stable/el/7/\$basearch
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://packagecloud.io/gpg.key https://grafanarel.s3.amazonaws.com/RPM-GPG-KEY-grafana
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
GRAFANA
yum install grafana
grafana-cli plugins install grafana-piechart-panel
grafana-cli plugins install yesoreyeram-boomtable-panel
grafana-cli plugins install neocat-cal-heatmap-panel
grafana-cli plugins install petrslavotinek-carpetplot-panel
systemctl enable grafana-server.service
systemctl start grafana-server.service
systemctl status grafana-server.service -l
https://github.com/lostsnow/grafana-dashboards
cat > /etc/yum.repos.d/prometheus.repo <<-PROMETHEUS
[prometheus]
name=prometheus
baseurl=https://packagecloud.io/prometheus-rpm/release/el/7/\$basearch
repo_gpgcheck=1
enabled=1
gpgkey=https://packagecloud.io/prometheus-rpm/release/gpgkey https://raw.githubusercontent.com/lest/prometheus-rpm/master/RPM-GPG-KEY-prometheus-rpm
gpgcheck=1
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
PROMETHEUS
yum install -y prometheus2 alertmanager
systemctl enable grafana-server.service
systemctl start grafana-server.service
systemctl status grafana-server.service -l
lanip=$(ifconfig eth0 | grep 'inet' | awk '{print $2}')
hname=$(hostname)
src_dir=/opt/soft
mkdir -p ${src_dir}
docker_compose_dir=/opt/projects/deploy/docker/prometheus
yum install -y node_exporter mysqld_exporter blackbox_exporter
# node_exporter
echo "NODE_EXPORTER_OPTS=\"--web.listen-address=${lanip}:13100\"" > /etc/default/node_exporter
cat /etc/default/node_exporter
systemctl enable node_exporter.service
systemctl start node_exporter.service
systemctl status node_exporter.service -l
# mysqld_exporter
CREATE USER 'exporter'@'localhost' IDENTIFIED BY 'pass' WITH MAX_USER_CONNECTIONS 3;
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'localhost';
echo "DATA_SOURCE_NAME=\"exporter:pass@(localhost:3306)/\"" > /etc/default/mysqld_exporter
echo "MYSQLD_EXPORTER_OPTS=\"-web.listen-address=${lanip}:13104 -config.my-cnf=/etc/my.cnf\"" >> /etc/default/mysqld_exporter
cat /etc/default/mysqld_exporter
systemctl enable mysqld_exporter.service
systemctl start mysqld_exporter.service
systemctl status mysqld_exporter.service -l
# nginx-exporter
mkdir -p ${docker_compose_dir}/nginx
cd ${docker_compose_dir}/nginx
cat > docker-compose.yml <<-COMPOSE_NGX
exporter:
image: fish/nginx-exporter
restart: unless-stopped
ports:
- "${lanip}:13113:9113"
extra_hosts:
- "${hname}:${lanip}"
command: ["-nginx.scrape_uri=http://${hname}/status_ngx"]
COMPOSE_NGX
docker-compose up -d
docker-compose ps
# nginx-request_exporter
# https://github.com/hnlq715/nginx-prometheus-metrics
# phpfpm_exporter
mkdir -p ${docker_compose_dir}/php-fpm
cd ${docker_compose_dir}/php-fpm
cat > docker-compose.yml <<-COMPOSE_PHPFPM
exporter:
image: barwell/phpfpm_exporter
restart: unless-stopped
ports:
- "${lanip}:13253:9253"
environment:
- PHPFPM_HOST=${hname}
- PHPFPM_PATH=/status_fpm
extra_hosts:
- "${hname}:${lanip}"
COMPOSE_PHPFPM
docker-compose up -d
docker-compose ps
# ssl-exporter
mkdir -p ${docker_compose_dir}/ssl
cd ${docker_compose_dir}/ssl
cat > docker-compose.yml <<-COMPOSE_SSL
exporter:
image: ribbybibby/ssl-exporter
restart: unless-stopped
ports:
- "${lanip}:13219:9219"
extra_hosts:
- "${hname}:${lanip}"
command: ["--tls.insecure"]
COMPOSE_SSL
docker-compose up -d
docker-compose ps
# domain_exporter
mkdir -p ${docker_compose_dir}/domain
cd ${docker_compose_dir}/domain
cat > domains.yml <<-DOMAINS
domains:
- domain.com
DOMAINS
cat > docker-compose.yml <<-COMPOSE_DOMAIN
exporter:
image: quay.io/shift/domain_exporter
restart: unless-stopped
ports:
- "${lanip}:13203:9203"
extra_hosts:
- "${hname}:${lanip}"
volumes:
- ./domains.yml:/domains.yml
command: ["--config=/domains.yml"]
COMPOSE_DOMAIN
docker-compose up -d
docker-compose ps
go get -u -v github.com/hunterlong/statup
cd $GOPATH/src/github.com/hunterlong/statup/
# change this line
# met += fmt.Sprintf("statup_service_latency{id=\"%v\" name=\"%v\"} %f\n", v.Id, v.Name, (v.Latency * 100))
go build -v
mkdir -p /opt/projects/deploy/statup/
mv statup /opt/projects/deploy/statup/
cat > /usr/lib/systemd/system/statup.service <<-STATUP
[Unit]
Description=Statup Server
After=network.target
After=systemd-user-sessions.service
After=network-online.target
[Service]
User=www
Group=www
Type=simple
Restart=always
ExecStart=/opt/projects/deploy/statup/statup
WorkingDirectory=/opt/projects/deploy/statup
[Install]
WantedBy=multi-user.target
STATUP
systemctl enable statup.service
systemctl start statup.service
systemctl status statup.service -l