Nginx
Logs
Filebeat configuration
Before you begin, you'll need:
- Filebeat
- Root access
- Port 5015 open
Download the Logz.io public certificate
For HTTPS shipping, download the Logz.io public certificate to your certificate authority folder.
sudo curl https://raw.githubusercontent.com/logzio/public-certificates/master/AAACertificateServices.crt --create-dirs -o /etc/pki/tls/certs/COMODORSADomainValidationSecureServerCA.crt
Add nginx as an input
In the Filebeat configuration file (/etc/filebeat/filebeat.yml), add nginx to the filebeat.inputs section.
Replace <<LOG-SHIPPING-TOKEN>>
with the token of the account you want to ship to.
Filebeat requires a file extension specified for the log input.
# ...
filebeat.inputs:
- type: filestream
paths:
- /var/log/nginx/access.log
fields:
logzio_codec: plain
# Your Logz.io account token. You can find your token at
# https://app.logz.io/#/dashboard/settings/manage-accounts
token: <<LOG-SHIPPING-TOKEN>>
type: nginx_access
fields_under_root: true
encoding: utf-8
ignore_older: 3h
- type: filestream
paths:
- /var/log/nginx/error.log
fields:
logzio_codec: plain
# Your Logz.io account token. You can find your token at
# https://app.logz.io/#/dashboard/settings/manage-accounts
token: <<LOG-SHIPPING-TOKEN>>
type: nginx_error
fields_under_root: true
encoding: utf-8
ignore_older: 3h
If you're running Filebeat 7 to 8.1, paste the code block below instead:
# ...
filebeat.inputs:
- type: log
paths:
- /var/log/nginx/access.log
fields:
logzio_codec: plain
# Your Logz.io account token. You can find your token at
# https://app.logz.io/#/dashboard/settings/manage-accounts
token: <<LOG-SHIPPING-TOKEN>>
type: nginx_access
fields_under_root: true
encoding: utf-8
ignore_older: 3h
- type: log
paths:
- /var/log/nginx/error.log
fields:
logzio_codec: plain
# Your Logz.io account token. You can find your token at
# https://app.logz.io/#/dashboard/settings/manage-accounts
token: <<LOG-SHIPPING-TOKEN>>
type: nginx_error
fields_under_root: true
encoding: utf-8
ignore_older: 3h
The above assumes the following defaults for Access logs:
- Log location -
/var/log/nginx/access.log
- Log type -
nginx
,nginx_access
, ornginx-access
Defaults for Error logs:
- Log location -
/var/log/nginx/error.log
- Log type -
nginx-error
Set Logz.io as the output
If Logz.io is not an output, add it now. Remove all other outputs.
Replace <<LISTENER-HOST>>
with the host for your region.
# ...
output.logstash:
hosts: ["<<LISTENER-HOST>>:5015"]
ssl:
certificate_authorities: ['/etc/pki/tls/certs/COMODORSADomainValidationSecureServerCA.crt']
Start Filebeat
Start or restart Filebeat for the changes to take effect.
Check Logz.io for your logs
Confirm you're shipping logs by opening an nginx-hosted webpage in your browser. Give your logs some time to get from your system to ours, and then open Open Search Dashboards.
You can search for type:nginx OR nginx_access OR nginx-access OR nginx-error
to filter for your logs. Your logs should be already parsed thanks to the Logz.io preconfigured parsing pipeline.
If you still don't see your logs, see Filebeat troubleshooting.
Metrics
To send your Prometheus-format Nginx metrics to Logz.io, you need to add the inputs.nginx and outputs.http plug-ins to your Telegraf configuration file.
Configure Telegraf to send your metrics data to Logz.io
Configure Nginx server
Enable
stub_status
module in the NGINX configuration file - nginx.conf:server {
listen 80;
server_name localhost;
location / {
stub_status;
allow `<<YOUR-LOCALHOST-ADDRESS>>`;
deny all;
}
}Replace
<<YOUR-LOCALHOST-ADDRESS>>
with your localhost address.Restart Nginx.
Set up Telegraf v1.17 or higher
For Windows
wget https://dl.influxdata.com/telegraf/releases/telegraf-1.27.3_windows_amd64.zip
After downloading the archive, extract its content into C:\Program Files\Logzio\telegraf\
.
The configuration file is located at C:\Program Files\Logzio\telegraf\
.
For MacOS
brew install telegraf
The configuration file is located at /usr/local/etc/telegraf.conf
.
For Linux
Ubuntu & Debian
sudo apt-get update && sudo apt-get install telegraf
The configuration file is located at /etc/telegraf/telegraf.conf
.
RedHat and CentOS
sudo yum install telegraf
The configuration file is located at /etc/telegraf/telegraf.conf
.
SLES & openSUSE
# add go repository
zypper ar -f obs://devel:languages:go/ go
# install latest telegraf
zypper in telegraf
The configuration file is located at /etc/telegraf/telegraf.conf
.
FreeBSD/PC-BSD
sudo pkg install telegraf
The configuration file is located at /etc/telegraf/telegraf.conf
.
Add the inputs.nginx plug-in
First you need to configure the input plug-in to enable Telegraf to scrape the Nginx data from your hosts. To do this, add the following code to the configuration file:
[[inputs.nginx]]
## An array of Nginx stub_status URI to gather stats.
urls = ["http://localhost/server_status"]
## Optional TLS Config
# tls_ca = "/etc/telegraf/ca.pem"
# tls_cert = "/etc/telegraf/cert.pem"
# tls_key = "/etc/telegraf/key.pem"
## Use TLS but skip chain & host verification
# insecure_skip_verify = false
## HTTP response timeout (default: 5s)
response_timeout = "5s"
[[inputs.disk]]
[[inputs.net]]
[[inputs.mem]]
[[inputs.system]]
[[inputs.cpu]]
## Whether to report per-cpu stats or not
percpu = false
## Whether to report total system cpu stats or not
totalcpu = true
## If true, collect raw CPU time metrics.
collect_cpu_time = true
## If true, compute and report the sum of all non-idle CPU states.
report_active = true
Add the outputs.http plug-in
After you create the configuration file, configure the output plug-in to enable Telegraf to send your data to Logz.io in Prometheus-format. To do this, add the following code to the configuration file:
[[outputs.http]]
url = "https://<<LISTENER-HOST>>:8053"
data_format = "prometheusremotewrite"
[outputs.http.headers]
Content-Type = "application/x-protobuf"
Content-Encoding = "snappy"
X-Prometheus-Remote-Write-Version = "0.1.0"
Authorization = "Bearer <<PROMETHEUS-METRICS-SHIPPING-TOKEN>>"
Replace the placeholders to match your specifics. (They are indicated by the double angle brackets << >>
):
- Replace
<<LISTENER-HOST>>
with the Logz.io Listener URL for your region, configured to use port 8052 for http traffic, or port 8053 for https traffic. - Replace
<<PROMETHEUS-METRICS-SHIPPING-TOKEN>>
with a token for the Metrics account you want to ship to. Look up your Metrics token.
Check Logz.io for your metrics
Install the pre-built dashboards to enhance the observability of your metrics.
To view the metrics on the main dashboard, log in to your Logz.io Metrics account, and open the Logz.io Metrics tab.