Как получить логи nginx для отображения в Прометее? - PullRequest
0 голосов
/ 30 августа 2018

У меня есть образ докера nginx, работающий через произвольный порт http://localhost:32774 У меня также есть образ докера Prometheus, работающий на http://localhost:9090/ Я хочу видеть мои журналы nginx на моем прометее

Я уже настроил nginx_status на моем контейнере nginx, и когда я свернулся Я могу видеть как страницу Nginx, так и страницу http://localhost/nginx_status, когда нахожусь в контейнере

Я могу просмотреть http://localhost:9090/graph - Прометей Я могу просмотреть http://localhost:32774 --- nginx в моем локальном браузере Я не могу просмотреть http://localhost:32774/nginx_status - 403 запрещен доступ в чем идея nginxexporter у меня есть как контейнер, работающий на localhost: 9113

Моя цель - сделать так, чтобы логи nginx отображались на Prometheus

вот мой default.conf

server {
listen       80;
server_name  localhost;

#charset koi8-r;
#access_log  /var/log/nginx/host.access.log  main;

location / {
    root   /usr/share/nginx/html;
    index  index.html index.htm;
}
location /nginx_status {
    stub_status on;

    access_log off;
    allow 127.0.0.1;
    allow ::1;
    deny all;
}


#error_page  404              /404.html;

# redirect server error pages to the static page /50x.html
#
error_page   500 502 503 504  /50x.html;
location = /50x.html {
    root   /usr/share/nginx/html;
}

# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
#    proxy_pass   http://127.0.0.1;
#}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
#    root           html;
#    fastcgi_pass   127.0.0.1:9000;
#    fastcgi_index  index.php;
#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
#    include        fastcgi_params;
#}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
#    deny  all;
#}
}

Ответы [ 3 ]

0 голосов
/ 31 августа 2018

Перво-наперво, прометей предназначен для метрик, а не для регистрации. Для ведения журнала вы можете использовать ElasticSearch в сочетании с Logstash и / или Filebeat.

nginx_exporter считывает данные из API состояния nginx. Таким образом, экспортер nginx должен иметь доступ к порту nginx, где этот API активен. В большинстве случаев с практическими рекомендациями это порт 8080, однако он настраивается.

https://github.com/nginxinc/nginx-prometheus-exporter Взгляните на эти примеры, где -nginx.scrape-uri - это URL / путь и порт для API nginx.

https://docs.nginx.com/nginx/admin-guide/monitoring/live-activity-monitoring/#configuring-the-api Посмотрите здесь, чтобы настроить свой API, вы должны добавить или изменить некоторые настройки nginx для этого.

Вы также можете просто создать серверный блок, как этот, чтобы включить nginx api.:

server {
    listen <fill_in_the_ip_of_your_server>:8080;
    location /api {
        api;
        allow all; 

    ###
    # change the 'allow all' if the server block doesn't have any access limitations and is accessible to
    # the world. You won't give the world access to your nginx data.
    # allow takes multiple types of data, the most popular and built-in one is a simple IP in CIDR notation (IP + subnet in bits (192.168.1.1/16 for example will give all addresses in 192.168.x.x. access to this api. /24 will do 192.168.1.x and /32 will fix that specified address only to access that specific server or 'location' block.
    ###

    }
}

После этого вам нужно добавить конечную точку «очистки» в прометей. Прометей называет это иногда «целями». Имейте в виду, что образ докера экспортера nginx должен иметь доступ к api экземпляров nginx (-plus) и что машина prometheus должна иметь доступ к странице метрик экспортера nginx по адресу: 9113 / metrics. Вы можете изменить порт экспортера nginx, но это не требуется, если этот порт еще не используется на IP-адресе, где живет экспортер.

Имейте также в виду, что если вы активируете API на другом порту, отличном от порта, запущенного в Docker, вы должны уничтожить контейнер и добавить отображение портов с помощью `-p- first, иначе этот порт активен только внутри контейнера Docker. но никогда не подвергается воздействию своего хоста ... в этом случае, вероятно, ваш сервер или компьютер.

Удачи!

0 голосов
/ 31 августа 2018

Prometheus - это система сбора и обработки метрик, а не система регистрации событий.

https://prometheus.io/docs/introduction/faq/#how-to-feed-logs-into-prometheus?

Вы можете настроить fluentd -> ES -> Grafana для визуализации журналов.

nginx_exporter просто получает статистику и экспорт nginx.

0 голосов
/ 31 августа 2018

Странно, prometheus используется для мониторинга без регистрации, а экспортер nginx не экспортирует журналы, он только экспортирует показатели мониторинга, такие как номер запроса, время запроса и возвращенный код.

Странно, что вы можете получить доступ к nginx с локального хоста, не думая о собственном порте ... но это объясняет ошибки.

...