Server returned http status 500 internal server error prometheus

Bug Report What did you do? query metrics using promQL one simple query request {__name__=~"node_exporter_build_info",branch!="HEAD"} one complex query request irate({__name__=~...

Bug Report

What did you do?
query metrics using promQL

one simple query request
{__name__=~"node_exporter_build_info",branch!="HEAD"}

one complex query request
irate({__name__=~"node_network_receive_bytes(_total|)",instance="1.2.3.4:9100",job="nodes",device!~"^(lo|veth.*|tunl.*|cali.*|docker.*)"}[1m])

What did you expect to see?

prometheus returns http code 200 .

What did you see instead? Under which circumstances?

HTTP status 500 Internal Server Error
{"status":"error","errorType":"internal","error":"server returned HTTP status 500 Internal Server Error"}
Environment

  • System information:

    Linux 3.10.0-327.el7.x86_64 x86_64

  • Prometheus version:

prometheus, version 2.5.0 (branch: HEAD, revision: 67dc912ac8b24f94a1fc478f352d25179c94ab9b) build user: root@578ab108d0b9 build date: 20181106-11:40:44 go version: go1.11.1

  • Prometheus configuration file:
global:
  scrape_interval:     15s
  evaluation_interval: 30s 
  scrape_timeout:      10s

  # The labels to add to any time series or alerts when communicating with
  # external systems (federation, remote storage, Alertmanager).
  external_labels:
    monitor: 'master'

remote_read:
  - url: http://101.21.36.42:8086/api/v1/prom/read?db=prometheus
    read_recent: true
remote_write:
  - url: http://101.21.36.42:8086/api/v1/prom/write?db=prometheus

rule_files:
  - /data/application/prometheus/rules/*.rules

# Alertmanager configuration
alerting:
  alertmanagers:
    - scheme: http
      path_prefix: /am
      static_configs:
        - targets:
                - 101.21.36.42::9093

# A list of scrape configurations.
scrape_configs:
  - job_name: 'prometheus'
    metrics_path: "/prome/metrics"
    scrape_interval: 10s
    scrape_timeout:  10s
    static_configs:
      - targets:
        - 101.21.36.42:9090

  - job_name: 'push_gateway'
    static_configs:
    - targets:
        - 101.21.36.42:9091

  - job_name: 'node'
    file_sd_configs:
      - files:
        - /data/application/prometheus/file_ds/nodes.json
    relabel_configs:
    - source_labels: [__address__]
      regex: (.+):(.+)
      replacement: ${1}
      target_label: instance_ip


  - job_name: 'snmp'
    scrape_interval: 120s
    scrape_timeout: 120s
    file_sd_configs:
      - files:
        - /data/application/prometheus/file_ds/snmps.json
    metrics_path: /snmp
    params:
      module: [if_mib]
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__address__]
        target_label: instance_ip
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: 101.21.36.42:9116  
  • Logs:
Dec 25 15:38:04 localhost prometheus: level=error ts=2018-12-25T07:38:04.93170476Z caller=engine.go:526 component="query engine" msg="error selecting series set" err="server returned HTTP status 500 Internal Server Error"
Dec 25 15:38:05 localhost prometheus: level=error ts=2018-12-25T07:38:05.275255324Z caller=engine.go:526 component="query engine" msg="error selecting series set" err="server returned HTTP status 500 Internal Server Error"

Environment

  • OpenShift Container Platform
    • 4.1.0
    • 4.1.4
    • 4.1.7

Issue

  • Prometheus is throwing a «server returned HTTP status 500 Internal Server Error».
  • This is happening on one or more nodes when attempting to access monitoring targets or endpoints that should normally be accessible.
  • Looking at journalctl on one of the failing nodes, we can see errors related to metrics collection:
10 error(s) occurred:
* collected metric kubelet_container_log_filesystem_used_bytes label:<name:"container" value:"dns" > label:<name:"namespace" value:"openshift-dns" > label:<name:"pod" value:"dns-default-dpvdr" > gauge:<value:12288 >  was collected before with the same name and label values
* collected metric kubelet_container_log_filesystem_used_bytes label:<name:"container" value:"machine-config-daemon" > label:<name:"namespace" value:"openshift-machine-config-operator" > label:<name:"pod" value:"machine-config-daemon-7clnj" > gauge:<value:12288 >  was collected before with the same name and label values

Resolution

  • Upgrade to OpenShift Container Platform 4.1.2 or higher, where this is marked as fixed, before attempting further troubleshooting. A very similar issue observed in 4.1.4 and 4.1.7 was addressed and fixed in 4.1.9 as well.

Root Cause

  • There is a bug report for 4.1.0 specifically concerning Prometheus endpoints and 500 errors. There are backports as well as upstream reports available in the bug report.

Diagnostic Steps

  1. Deploy OCP 4.1.0 on vmware/bare metal environment with monitoring enabled.
  2. Let the cluster run for a few days.
  3. Load the Prometheus page, and observe the error.


  • Product(s)

  • Red Hat OpenShift Container Platform


  • Component

  • Prometheus


  • Category

  • Troubleshoot


  • Tags

  • monitoring
  • shift_metrics

This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.

Содержание

  1. A simple way to make PushGateway always return 500 #214
  2. Comments
  3. Bug Report
  4. HTTP status 500 Internal Server Error for Prometheus endpoints
  5. Environment
  6. Issue
  7. Resolution
  8. Root Cause
  9. Diagnostic Steps
  10. 500 Internal Server Error ‘module’ object has no attribute ‘urllib3’ #17
  11. Comments
  12. Internal Server Error
  13. pip install prometheus-pve-exporter
  14. —— coding: utf-8 ——
  15. Error 500s from remote exporter #13
  16. Comments
  17. Summary of Issue
  18. Environment
  19. Detailed Description
  20. Additional Notes
  21. Ошибка 500 Internal Server Error: что это и как её исправить
  22. Ошибка 500 Internal Server Error — диагностика
  23. Ошибка 500 Internal Server Error — устранение на популярных платформах
  24. Ошибка 500 Internal Server Error — устранение на стороне серверных скриптов
  25. Попросите помощи у системного администратора
  26. Ошибку 500 Internal Server Error довольно легко устранить

A simple way to make PushGateway always return 500 #214

Bug Report

What did you do?
When I use shell to send redundent metrics to pushgateway service via HTTP request, the pushgateway become unusable, because it will always return 500 Internel Server Error

The normal scripts looks like this:

The above script is absolutely fine. But when I add one more line, and run it, the PushGateway will have problem.

The BAD scripts looks like this:

Please notice there are two same metrics-labels combination.
After I run the BAD script, the pushgateway become unusable. I have to restart the pushgateway process.

What did you expect to see?
This is like some kind of DoS attach, because anyone with access to the pushgateway service will be able to make it unusable.
I think the pushgateway process should detect this kind of problem, and not become unusable. I think it would be fine to just report error to client and reject the data, or show a warning message and take the last pushed data.

What did you see instead? Under which circumstances?
The pushgateway become ususable.

The error log of Prometheus:

level=debug ts=2018-10-11T08:20:55.640547371Z caller=scrape.go:687 component=»scrape manager» scrape_pool=pushgateway target=http://127.0.0.1:9091/metrics msg=»Scrape failed» err=»server returned HTTP status 500 Internal Server Error»
level=debug ts=2018-10-11T08:21:25.631180199Z caller=scrape.go:687 component=»scrape manager» scrape_pool=pushgateway target=http://127.0.0.1:9091/metrics msg=»Scrape failed» err=»server returned HTTP status 500 Internal Server Error»
level=debug ts=2018-10-11T08:21:55.625134532Z caller=scrape.go:687 component=»scrape manager» scrape_pool=pushgateway target=http://127.0.0.1:9091/metrics msg=»Scrape failed» err=»server returned HTTP status 500 Internal Server Error»
level=debug ts=2018-10-11T08:22:25.615441221Z caller=scrape.go:687 component=»scrape manager» scrape_pool=pushgateway target=http://127.0.0.1:9091/metrics msg=»Scrape failed» err=»server returned HTTP status 500 Internal Server Error»
level=debug ts=2018-10-11T08:22:55.618985952Z caller=scrape.go:687 component=»scrape manager» scrape_pool=pushgateway target=http://127.0.0.1:9091/metrics msg=»Scrape failed» err=»server returned HTTP status 500 Internal Server Error»
level=debug ts=2018-10-11T08:23:25.613090781Z caller=scrape.go:687 component=»scrape manager» scrape_pool=pushgateway target=http://127.0.0.1:9091/metrics msg=»Scrape failed» err=»server returned HTTP status 500 Internal Server Error»

Environment

CentOS Linux release 7.5.1804 (Core)
Linux 3.10.0-862.2.3.el7.x86_64 x86_64

pushgateway, version 0.5.2 (branch: HEAD, revision: 231071b)
build user: root@c95e387ff56a
build date: 20180615-16:11:56
go version: go1.10.3

prometheus, version 2.2.1 (branch: HEAD, revision: bc6058c81272a8d938c05e75607371284236aadc)
build user: root@149e5b3f0829
build date: 20180314-14:15:45
go version: go1.10

Pushgateway command line:

/opt/push/pushgateway/bin/pushgateway —web.listen-address=:9091 —log.level=debug

The text was updated successfully, but these errors were encountered:

Источник

HTTP status 500 Internal Server Error for Prometheus endpoints

Environment

  • OpenShift Container Platform
    • 4.1.0
    • 4.1.4
    • 4.1.7

Issue

  • Prometheus is throwing a «server returned HTTP status 500 Internal Server Error».
  • This is happening on one or more nodes when attempting to access monitoring targets or endpoints that should normally be accessible.
  • Looking at journalctl on one of the failing nodes, we can see errors related to metrics collection:

Resolution

  • Upgrade to OpenShift Container Platform 4.1.2 or higher, where this is marked as fixed, before attempting further troubleshooting. A very similar issue observed in 4.1.4 and 4.1.7 was addressed and fixed in 4.1.9 as well.

Root Cause

  • There is a bug report for 4.1.0 specifically concerning Prometheus endpoints and 500 errors. There are backports as well as upstream reports available in the bug report.

Diagnostic Steps

  1. Deploy OCP 4.1.0 on vmware/bare metal environment with monitoring enabled.
  2. Let the cluster run for a few days.
  3. Load the Prometheus page, and observe the error.
  • Product(s)
  • Red Hat OpenShift Container Platform
  • Component
  • Prometheus
  • Category
  • Troubleshoot
  • Tags
  • monitoring
  • shift_metrics

This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.

Источник

500 Internal Server Error ‘module’ object has no attribute ‘urllib3’ #17

doing some test I see this below ( I removed my real IP)

500 Internal Server Error «

Internal Server Error

‘module’ object has no attribute ‘urllib3’

  • job_name: ‘pve’
    static_configs:
    • targets:
      • internalproxmoxip # Proxmox VE node with PVE exporter.
        metrics_path: /pve
        params:
        module: [default]
        relabel_configs:
    • source_labels: [address]
      target_label: __param_target
    • source_labels: [__param_target]
      target_label: instance
    • target_label: address
      replacement: 127.0.0.1:9221 # PVE exporter.

to make sure I didn’t have access issues I used root for testing

[root@secretservername home]# more pve.yml
default:
user: root
password: mypassword
verify_ssl: false

thanks any guidance

The text was updated successfully, but these errors were encountered:

It looks like the exporter fails to find some of its dependencies. Did you follow a particular guide to install/run this project?

yes went step by step install the exporter on Prometheus using https://github.com/znerol/prometheus-pve-exporter

wget https://github.com/prometheus/prometheus/releases/download/v2.4.0/prometheus-2.4.0.linux-amd64.tar.gz
32 tar -xvzf prometheus-2.4.0.linux-amd64.tar.gz
33 mv prometheus-2.4.0.linux-amd64/ prometheus
34 useradd -m -s /bin/bash prometheus
35 mv prometheus /home/prometheus/
36 cd /home/prometheus/
37 chown -Rv prometheus. prometheus
38 cd /etc/systemd/system/
39 vi prometheus.service
40 systemctl start prometheus
41 systemctl status prometheus
42 yum install python2-pip.noarch
43 pip install python-neutronclient
44 yum clean all
45 yum update
46 yum install gcc python-devel
47 pip install python-neutronclient
48 yum install https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-5.2.4-1.x86_64.rpm
49 systemctl status firewalld
50 systemctl stop firewalld
51 systemctl status firewalld
52 systemctl start grafana-server
53 systemctl status grafana-server
pip install prometheus-pve-exporter
56 cd /home
57 vi pve.yml
58 vi /home/prometheus/prometheus/prometheus.yml
59 history
60 systemctl restart prometheus
61 systemctl status prometheus
62 vi /home/prometheus/prometheus/prometheus.yml
63 pve_exporter
64 vi /home/prometheus/prometheus/prometheus.yml
65 systemctl status prometheus
66 systemctl restart prometheus

didnt know if this would give more info,

pip install prometheus-pve-exporter

Requirement already satisfied (use —upgrade to upgrade): prometheus-pve-exporter in /usr/lib/python2.7/site-packages
Requirement already satisfied (use —upgrade to upgrade): prometheus-client>=0.0.11 in /usr/lib/python2.7/site-packages (from prometheus-pve-exporter)
Requirement already satisfied (use —upgrade to upgrade): proxmoxer in /usr/lib/python2.7/site-packages (from prometheus-pve-exporter)
Requirement already satisfied (use —upgrade to upgrade): Werkzeug in /usr/lib/python2.7/site-packages (from prometheus-pve-exporter)
Requirement already satisfied (use —upgrade to upgrade): requests in /usr/lib/python2.7/site-packages (from prometheus-pve-exporter)
Requirement already satisfied (use —upgrade to upgrade): pyyaml in /usr/lib64/python2.7/site-packages (from prometheus-pve-exporter)
Requirement already satisfied (use —upgrade to upgrade): idna =2.5 in /usr/lib/python2.7/site-packages (from requests->prometheus-pve-exporter)
Requirement already satisfied (use —upgrade to upgrade): chardet =3.0.2 in /usr/lib/python2.7/site-packages (from requests->prometheus-pve-exporter)
Requirement already satisfied (use —upgrade to upgrade): urllib3 =1.21.1 in /usr/lib/python2.7/site-packages (from requests->prometheus-pve-exporter)
Requirement already satisfied (use —upgrade to upgrade): certifi>=2017.4.17 in /usr/lib/python2.7/site-packages (from requests->prometheus-pve-exporter)

Requirement already satisfied (use —upgrade to upgrade): urllib3 =1.21.1 in /usr/lib/python2.7/site-packages (from requests->prometheus-pve-exporter)

Looks like this is installed properly. How do you launch prometheus-pve-exporter ?

2 ways sometimes I run pve_exporterter pve.yml to watch for the 500 error. Or I can use my service

systemctl start prometheus-pve-exporter.service

[Unit]
Description=Prometheus exporter for Proxmox VE
Documentation=https://github.com/znerol/prometheus-pve-exporter

[Service]
Restart=always
User=prometheus
ExecStart=/usr/bin/pve_exporter /home/pve.yml

Can you please post the contents of /usr/bin/pve_exporter

]# more /usr/bin/pve_exporter
#!/usr/bin/python2

— coding: utf-8 —

import re
import sys

from pve_exporter.cli import main

if name == ‘main‘:
sys.argv[0] = re.sub(r'(-script.pyw|.exe)?$’, », sys.argv[0])
sys.exit(main())

ls /usr/bin/python*
/usr/bin/python /usr/bin/python2 /usr/bin/python2.7

Regrettably I’m out of ideas right now. It looks like everything is in place I have no idea why python fails to load that library.

ok at-least thats something , let me do more digging. Wasn’t sure where the issue might be. Let you know if I find something. thanks mate !!

Closing this due to lack of activity.

doing some test I see this below ( I removed my real IP)

500 Internal Server Error » # Internal Server Error » ‘module’ object has no attribute ‘urllib3’

job_name: ‘pve’
static_configs:

  • internalproxmoxip # Proxmox VE node with PVE exporter.
    metrics_path: /pve
    params:
    module: [default]
    relabel_configs:

source_labels: [address]
target_label: __param_target

source_labels: [__param_target]
target_label: instance

target_label: address
replacement: 127.0.0.1:9221 # PVE exporter.

to make sure I didn’t have access issues I used root for testing

[root@secretservername home]# more pve.yml
default:
user: root
password: mypassword
verify_ssl: false

thanks any guidance

use the user like PVE uses it in the GUI. In my case it was: root@pam

Источник

Error 500s from remote exporter #13

Summary of Issue

Running prometheus-pve-exporter on a non-proxmox server. prometheus-pve-exporter is returning 500s when queried.

Environment

PVE Manager Version pve-manager/5.2-1
I am running the prometheus-pve-exporter-1.1.1 pip release which I saw patched a similar issue.

Detailed Description

prometheus-pve-exporter logs show:

proxmox node syslogs show:

Permissions:

Additional Notes

If I navigate to /pve?target=192.168.1.2 on the exporter server I get:

The text was updated successfully, but these errors were encountered:

Thanks for the report. I think that the collector is trying to access a name field from a resource returned by the Proxmox API / Proxmoxer library. There are several places where a name field is expected. The reported error indicates that it is missing on one of the returned responses.

Do you run your the proxmox instances as a cluster?

Thanks for the quick response. Yes I am running the instances as a cluster.

I dumped the returned entry values:

and resource values:

Anything else I could do to help debug?

Honestly I have no idea. I might have the opportunity to test the exporter against a 5.2 cluster this week.

It is a bit unfortunate that the error message is so unspecific.

It is a bit unfortunate that the error message is so unspecific.

I think this is due to the following fragment in http.py:

I guess that the try. except block is hiding upstream exceptions. So maybe just remove the cruft so that the only line lift reads

That might be something to try if you are comfortable hacking those files.

This seems to be related to the unusual state my cluster is in. Some time ago I removed a node (officedave) from the cluster without first deleting all linked VMs.

At least some VMs still linked to this node were missing the ‘name’ attribute:

(In the above message I only grabbed a few lines of resource output)

I manually deleted all the configuration data related to this node within proxmox:
rm -rf /etc/pve/nodes/officedave

Now prometheus-pve-exporter is working great. Thanks for helping me debug this.

Источник

Ошибка 500 Internal Server Error: что это и как её исправить

Разработчики и люди, профессионально работающие с веб-приложениями, боятся 500 Internal Server Error . Оптимальный способ её устранения зависит от сервера и того, что на нём запущено. В данной статье приводятся советы по диагностике и исправлению ошибки 500 .

Ошибка 500 Internal Server Error — диагностика

Важно помнить, что эта ошибка происходит на стороне сервера. Это значит, что HTML-код , выполняемый на стороне клиента, а также JavaScript или любые другие запущенные в браузере объекты, не могут быть причиной, по которой возникает ошибка 500 Internal Server Error . Само название ( Internal Server Error – ‘внутренняя ошибка сервера’ ) говорит о том, что ошибка происходит на сервере.

Ошибка 500 Internal Server Error — устранение на популярных платформах

Многие пользователи устанавливают на свой сервер популярные CMS-системы , такие как WordPress , Joomla , Drupal и они не должны вызывать ошибку 500 , если всё настроено правильно. Однако она всё равно всплывает – из-за несовместимости версий, некачественных установок или сбоя прав доступа на сервере.

Вот некоторые распространённые проблемы, которые могут вызывать подобную ошибку в часто используемых CMS :

  • Если вы только что обновили движок до новой версии, вероятно, обновление прошло с ошибками и необходимо провести его повторно. Скорее всего, на сайте разработчика есть инструкции, как это правильно сделать.
  • Если вы только что активировали новый плагин или новую тему, стоит попробовать отменить эти изменения. Даже профессионально написанные плагины могут конфликтовать с другими и вызывать 500 Internal Server Error nginx
  • Если вы обновляли CMS , старые плагины и темы могут быть с ней несовместимы. Единственное, что можно сделать в таком случае — отключать их по очереди, пока ошибка 500 не исчезнет.
  • Неправильно заданные права доступа на сервере или ошибки в файле .htaccess . Серверу не удаётся получить доступ к скриптам, файлам и другим ресурсам, поэтому он выдаёт ошибку.

Когда причиной, по которой возникает ошибка 500 Internal Server Error являются скрипты и плагины, лучше всего искать ответы на сайтах их разработчиков.

Ошибка 500 Internal Server Error — устранение на стороне серверных скриптов

Другой причиной по которой может возникнуть ошибка 500 Internal Server Error может стать разработка и тестирование собственных скриптов.

Чтобы справиться с такой ошибкой, попробуйте следующие решения :

  • Настройка прав на сервере : часто неверная настройка прав доступа к файлу или папке приводит к тому, что сервером выдаётся ошибка 500 Internal Server Error . Из-за того, что ему не удаётся запустить скрипт. Выясните, какие права должны быть настроены, и выставьте их соответствующим образом.
  • Превышено время ожидания : возможно, истекло время ожидания ответа от PHP или другого серверного скрипта. Это происходит из-за того, что недоступен определённый ресурс или коде была допущена ошибка, запускающая бесконечный цикл.
  • Превышено время ожидания соединения с сервером: если сервер был занят, перезагружался или потерял соединение, скрипт может выдать ошибку 500 Internal Server Error . Возможно, в следующий раз ошибки не будет. Но если ошибка появляется при тестировании, велика вероятность того, что она встретится и пользователям.
  • Ошибки в файле .htaccess: в некоторых случаях ошибку 500 может вызывать код, прописанный в файле .htaccess .
  • Ошибки в скрипте: если ошибку выдаёт скрипт, можете запросить у него подробную информацию об ошибке. К примеру, в PHP можно включить вывод ошибок на экран или в лог-файл, добавив директиву display_errors . По умолчанию среда выполнения может скрывать ошибки, но это не очень удобно для отладки программы.

Попросите помощи у системного администратора

В некоторых случаях у разработчиков нет полного контроля над сервером.

Если скрипт запускается на сервере сторонней организации, она может помочь вам в следующем :

  • Предоставить документацию о своём сервере и возможных причинах ошибки 500 . В зависимости от используемой операционной системы и настройки оборудования, данная ошибка может возникать по разным причинам.
  • Попросите службу поддержки хостинга посмотреть лог-файлы с ошибками — системный администратор сможет определить, был ли сервер во время возникновения ошибки загружен или вовсе « упал ».

Ошибку 500 Internal Server Error довольно легко устранить

Ошибка 500 Internal Server Error — как исправить ? В большинстве случаев причины возникновения ошибки 500 легко исправляются. Проблема заключается в том, что без конкретной информации определение причины возникновения сбоя усложняется. Легче всего справиться с ошибкой, когда разработчик выяснит, что изменилось перед возникновением ошибки.

Не забывайте, что произошедшие изменения могли быть осуществлены и другими людьми — например, администратором сервера. Если же ничего не менялось, вероятно, сам сервер стал причиной возникновения ошибки из-за несовместимости программного обеспечения или проблем с производительностью.

Вадим Дворников автор-переводчик статьи « 500 Internal Server Error: What It Is And How To Fix It »

Источник

HTTP status 500 Internal Server Error for Prometheus endpoints

Environment

  • OpenShift Container Platform
    • 4.1.0
    • 4.1.4
    • 4.1.7

Issue

  • Prometheus is throwing a «server returned HTTP status 500 Internal Server Error».
  • This is happening on one or more nodes when attempting to access monitoring targets or endpoints that should normally be accessible.
  • Looking at journalctl on one of the failing nodes, we can see errors related to metrics collection:

Resolution

  • Upgrade to OpenShift Container Platform 4.1.2 or higher, where this is marked as fixed, before attempting further troubleshooting. A very similar issue observed in 4.1.4 and 4.1.7 was addressed and fixed in 4.1.9 as well.

Root Cause

  • There is a bug report for 4.1.0 specifically concerning Prometheus endpoints and 500 errors. There are backports as well as upstream reports available in the bug report.

Diagnostic Steps

  1. Deploy OCP 4.1.0 on vmware/bare metal environment with monitoring enabled.
  2. Let the cluster run for a few days.
  3. Load the Prometheus page, and observe the error.
  • Product(s)
  • Red Hat OpenShift Container Platform
  • Component
  • Prometheus
  • Category
  • Troubleshoot
  • Tags
  • monitoring
  • shift_metrics

This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.

Источник

A simple way to make PushGateway always return 500 #214

Comments

wfhu commented Oct 11, 2018

Bug Report

What did you do?
When I use shell to send redundent metrics to pushgateway service via HTTP request, the pushgateway become unusable, because it will always return 500 Internel Server Error

The normal scripts looks like this:

The above script is absolutely fine. But when I add one more line, and run it, the PushGateway will have problem.

The BAD scripts looks like this:

Please notice there are two same metrics-labels combination.
After I run the BAD script, the pushgateway become unusable. I have to restart the pushgateway process.

What did you expect to see?
This is like some kind of DoS attach, because anyone with access to the pushgateway service will be able to make it unusable.
I think the pushgateway process should detect this kind of problem, and not become unusable. I think it would be fine to just report error to client and reject the data, or show a warning message and take the last pushed data.

What did you see instead? Under which circumstances?
The pushgateway become ususable.

The error log of Prometheus:

level=debug ts=2018-10-11T08:20:55.640547371Z caller=scrape.go:687 component=»scrape manager» scrape_pool=pushgateway target=http://127.0.0.1:9091/metrics msg=»Scrape failed» err=»server returned HTTP status 500 Internal Server Error»
level=debug ts=2018-10-11T08:21:25.631180199Z caller=scrape.go:687 component=»scrape manager» scrape_pool=pushgateway target=http://127.0.0.1:9091/metrics msg=»Scrape failed» err=»server returned HTTP status 500 Internal Server Error»
level=debug ts=2018-10-11T08:21:55.625134532Z caller=scrape.go:687 component=»scrape manager» scrape_pool=pushgateway target=http://127.0.0.1:9091/metrics msg=»Scrape failed» err=»server returned HTTP status 500 Internal Server Error»
level=debug ts=2018-10-11T08:22:25.615441221Z caller=scrape.go:687 component=»scrape manager» scrape_pool=pushgateway target=http://127.0.0.1:9091/metrics msg=»Scrape failed» err=»server returned HTTP status 500 Internal Server Error»
level=debug ts=2018-10-11T08:22:55.618985952Z caller=scrape.go:687 component=»scrape manager» scrape_pool=pushgateway target=http://127.0.0.1:9091/metrics msg=»Scrape failed» err=»server returned HTTP status 500 Internal Server Error»
level=debug ts=2018-10-11T08:23:25.613090781Z caller=scrape.go:687 component=»scrape manager» scrape_pool=pushgateway target=http://127.0.0.1:9091/metrics msg=»Scrape failed» err=»server returned HTTP status 500 Internal Server Error»

Environment

CentOS Linux release 7.5.1804 (Core)
Linux 3.10.0-862.2.3.el7.x86_64 x86_64

pushgateway, version 0.5.2 (branch: HEAD, revision: 231071b)
build user: root@c95e387ff56a
build date: 20180615-16:11:56
go version: go1.10.3

prometheus, version 2.2.1 (branch: HEAD, revision: bc6058c81272a8d938c05e75607371284236aadc)
build user: root@149e5b3f0829
build date: 20180314-14:15:45
go version: go1.10

Pushgateway command line:

/opt/push/pushgateway/bin/pushgateway —web.listen-address=:9091 —log.level=debug

The text was updated successfully, but these errors were encountered:

Источник

500 Internal Server Error ‘module’ object has no attribute ‘urllib3’ #17

Comments

webguylearn commented Nov 5, 2018 •

doing some test I see this below ( I removed my real IP)

500 Internal Server Error «

Internal Server Error

‘module’ object has no attribute ‘urllib3’

  • job_name: ‘pve’
    static_configs:
    • targets:
      • internalproxmoxip # Proxmox VE node with PVE exporter.
        metrics_path: /pve
        params:
        module: [default]
        relabel_configs:
    • source_labels: [address]
      target_label: __param_target
    • source_labels: [__param_target]
      target_label: instance
    • target_label: address
      replacement: 127.0.0.1:9221 # PVE exporter.

to make sure I didn’t have access issues I used root for testing

[root@secretservername home]# more pve.yml
default:
user: root
password: mypassword
verify_ssl: false

thanks any guidance

The text was updated successfully, but these errors were encountered:

znerol commented Nov 5, 2018

It looks like the exporter fails to find some of its dependencies. Did you follow a particular guide to install/run this project?

webguylearn commented Nov 5, 2018

yes went step by step install the exporter on Prometheus using https://github.com/znerol/prometheus-pve-exporter

wget https://github.com/prometheus/prometheus/releases/download/v2.4.0/prometheus-2.4.0.linux-amd64.tar.gz
32 tar -xvzf prometheus-2.4.0.linux-amd64.tar.gz
33 mv prometheus-2.4.0.linux-amd64/ prometheus
34 useradd -m -s /bin/bash prometheus
35 mv prometheus /home/prometheus/
36 cd /home/prometheus/
37 chown -Rv prometheus. prometheus
38 cd /etc/systemd/system/
39 vi prometheus.service
40 systemctl start prometheus
41 systemctl status prometheus
42 yum install python2-pip.noarch
43 pip install python-neutronclient
44 yum clean all
45 yum update
46 yum install gcc python-devel
47 pip install python-neutronclient
48 yum install https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-5.2.4-1.x86_64.rpm
49 systemctl status firewalld
50 systemctl stop firewalld
51 systemctl status firewalld
52 systemctl start grafana-server
53 systemctl status grafana-server
pip install prometheus-pve-exporter
56 cd /home
57 vi pve.yml
58 vi /home/prometheus/prometheus/prometheus.yml
59 history
60 systemctl restart prometheus
61 systemctl status prometheus
62 vi /home/prometheus/prometheus/prometheus.yml
63 pve_exporter
64 vi /home/prometheus/prometheus/prometheus.yml
65 systemctl status prometheus
66 systemctl restart prometheus

webguylearn commented Nov 5, 2018 •

didnt know if this would give more info,

pip install prometheus-pve-exporter

Requirement already satisfied (use —upgrade to upgrade): prometheus-pve-exporter in /usr/lib/python2.7/site-packages
Requirement already satisfied (use —upgrade to upgrade): prometheus-client>=0.0.11 in /usr/lib/python2.7/site-packages (from prometheus-pve-exporter)
Requirement already satisfied (use —upgrade to upgrade): proxmoxer in /usr/lib/python2.7/site-packages (from prometheus-pve-exporter)
Requirement already satisfied (use —upgrade to upgrade): Werkzeug in /usr/lib/python2.7/site-packages (from prometheus-pve-exporter)
Requirement already satisfied (use —upgrade to upgrade): requests in /usr/lib/python2.7/site-packages (from prometheus-pve-exporter)
Requirement already satisfied (use —upgrade to upgrade): pyyaml in /usr/lib64/python2.7/site-packages (from prometheus-pve-exporter)
Requirement already satisfied (use —upgrade to upgrade): idna =2.5 in /usr/lib/python2.7/site-packages (from requests->prometheus-pve-exporter)
Requirement already satisfied (use —upgrade to upgrade): chardet =3.0.2 in /usr/lib/python2.7/site-packages (from requests->prometheus-pve-exporter)
Requirement already satisfied (use —upgrade to upgrade): urllib3 =1.21.1 in /usr/lib/python2.7/site-packages (from requests->prometheus-pve-exporter)
Requirement already satisfied (use —upgrade to upgrade): certifi>=2017.4.17 in /usr/lib/python2.7/site-packages (from requests->prometheus-pve-exporter)

znerol commented Nov 5, 2018

Requirement already satisfied (use —upgrade to upgrade): urllib3 =1.21.1 in /usr/lib/python2.7/site-packages (from requests->prometheus-pve-exporter)

Looks like this is installed properly. How do you launch prometheus-pve-exporter ?

webguylearn commented Nov 5, 2018

2 ways sometimes I run pve_exporterter pve.yml to watch for the 500 error. Or I can use my service

systemctl start prometheus-pve-exporter.service

[Unit]
Description=Prometheus exporter for Proxmox VE
Documentation=https://github.com/znerol/prometheus-pve-exporter

[Service]
Restart=always
User=prometheus
ExecStart=/usr/bin/pve_exporter /home/pve.yml

znerol commented Nov 5, 2018

Can you please post the contents of /usr/bin/pve_exporter

webguylearn commented Nov 5, 2018

]# more /usr/bin/pve_exporter
#!/usr/bin/python2

— coding: utf-8 —

import re
import sys

from pve_exporter.cli import main

if name == ‘main‘:
sys.argv[0] = re.sub(r'(-script.pyw|.exe)?$’, », sys.argv[0])
sys.exit(main())

webguylearn commented Nov 5, 2018

ls /usr/bin/python*
/usr/bin/python /usr/bin/python2 /usr/bin/python2.7

znerol commented Nov 5, 2018

Regrettably I’m out of ideas right now. It looks like everything is in place I have no idea why python fails to load that library.

webguylearn commented Nov 5, 2018

ok at-least thats something , let me do more digging. Wasn’t sure where the issue might be. Let you know if I find something. thanks mate !!

znerol commented May 3, 2020

Closing this due to lack of activity.

martijncassels commented May 18, 2020

doing some test I see this below ( I removed my real IP)

500 Internal Server Error » # Internal Server Error » ‘module’ object has no attribute ‘urllib3’

job_name: ‘pve’
static_configs:

  • internalproxmoxip # Proxmox VE node with PVE exporter.
    metrics_path: /pve
    params:
    module: [default]
    relabel_configs:

source_labels: [address]
target_label: __param_target

source_labels: [__param_target]
target_label: instance

target_label: address
replacement: 127.0.0.1:9221 # PVE exporter.

to make sure I didn’t have access issues I used root for testing

[root@secretservername home]# more pve.yml
default:
user: root
password: mypassword
verify_ssl: false

thanks any guidance

use the user like PVE uses it in the GUI. In my case it was: root@pam

Источник

HTTP 500: target not set correct #82

Comments

discostur commented Aug 30, 2021

just deployed pve_exporter via docker on the proxmox host directly. Exporter works when i try scraping metrics manually via curl:

However, i configured prometheus like explained but it only gets HTTP 500:

Looks to me like when i curl manually and don’t set any target:

Internal Server Error

The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.

Shouldn’t the target been set automatically by prometheus?

Thanks
Regards,
Kilian

The text was updated successfully, but these errors were encountered:

discostur commented Aug 30, 2021

Just tried to set the target manually in prometheus config and than it works:

But i think thats not how it should work . if i have more than one node its broken again.

znerol commented Aug 30, 2021

TL;DR: targets list has nothing to do with target url parameter. This is quite confusing but in prometheus the targets list is the source of the __address__ label.

With this config:

Prometheus will construct the following endpoint url:

You can verify that by navigating to the prometheus web interface and click on the targets tab. If you like to propagate the __address__ (from the targets list) to the target param, you need relabel_configs as shown at the bottom of the readme.

discostur commented Aug 30, 2021 •

@znerol thanks for the explanation. I just tried with different relabel_configs but i still can’t get it working .

My pve_exporter is running locally on the proxmox node and prometheus is running on a different node:

prometheus (192.168.1.180) -> proxmox (pve_exporter, 192.168.1.181)

I tried all four configs:

Can you please point me to the correct relabel_config ? :/

Prometheus dashboard showed me only in one case the constructed URL .

znerol commented Aug 30, 2021

Let’s get there systematically.

just deployed pve_exporter via docker on the proxmox host directly.

Please check whether PVE API is reachable from within a docker container. Run this from your docker host:

This should return something like this:

Also check whether the —insecure flag is required. If curl succeeds with the —insecure flag and if it fails without, then make sure that you need to include verify_ssl: false in pve.yml configuration file.

Do you manage to get curl call working when run from docker ?

Источник

Hemedi Salim

unread,

Feb 28, 2022, 3:48:20 PM2/28/22

to Prometheus Users

Hi all,

I am babie to this world(prometheus, snmp_exporter).  I recently configure Prometheus/snmp_exporter to monitors swithes. I want to monitor 5 switches  but Prometheus scrap metrics form 2 switches and the other three shows an error ( server returned HTTP status 500 Internal Server Error).

am using the default smnp.yml which I generate form snmp generator. and my Prometheus.yml setting look like this:

job_name: snmp

metrics_path: /snmp
params:
module: [if_mib]
static_configs:
— targets:
— 127.0.0.1
relabel_configs:
— source_labels: [__address__]
target_label: __param_target
— source_labels: [__param_target]
target_label: instance
— target_label: __address__
replacement: 127.0.0.1:9116 # URL as shown on the UI

I tried to do snmp walk to troubleshout with command (snmpwalk -v2c -c public x.x.x.x) the x.x.x.x represent switch ip. but it gives me time out error.

then I figure out the switches which gives error has snmp community string set up. so I tried to run snmpwalk again replacing default public communit string with the community string set on this switches and I was able to snmpwalk on these swathes.

my question is, how can I make the Prometheus scrape from these remaining switches, is there any setting am missing to facilitate that?

please help.

Brian Candler

unread,

Mar 1, 2022, 10:57:45 AM3/1/22

to Prometheus Users

Aside: curl is useful for debugging:

However in your case, you’ve found the problem: you need to set a community string.

Unfortunately, snmp_exporter makes it hard to set this, because the MIB and the device authentication are bundled together in the «module».  Here’s the easiest way I’ve found to do this:

1. Edit snmp.yml (that was supplied with snmp_exporter, or that you generated)

2. Find the MIB that you’re interested in using: in this case if_mib.  Modify the first line like this:

if_mib:

becomes

if_mib: &if_mib

(this is called an «anchor» in YAML)

3. Add to the very *end* of the file:

if_mib_secret:
  <<: *if_mib
  version: 2
  auth:
    community: BlahBlah123

What you’re doing is taking a copy of the «if_mib» section, and then overriding some of the parameters (the ‘auth’ and ‘version’ keys) without changing anything else.

[Aside: you should be able to do steps 1-3 using the snmp generator instead, but you’ll have to duplicate the if_mib section in generator.yml instead, and then run the generator]

4. Restart snmp_exporter, and check this works using curl:

5. Change your scrape job for these devices to use module if_mib_secret instead of if_mib.

Oddly, your scrape job shows a static target of only 127.0.0.1, i.e. it looks like you’re sending queries to the snmpd running on prometheus itself, not to any remote devices.  I would suggest that you use the file_sd mechanism, and also that you pick up the module from this, so that a single scrape job can handle any combination of targets and SNMP modules.

  — job_name: snmp
    metrics_path: /snmp
    file_sd_configs:
      — files:
          — /etc/prometheus/targets.d/snmp_targets.yml
    relabel_configs:
      — source_labels: [__address__]
        target_label: instance


      — source_labels: [__address__]
        target_label: __param_target

      — source_labels: [module]
        target_label: __param_module
      — target_label: __address__
        replacement: 127.0.0.1:9116  # SNMP exporter

then in snmp_targets.yml you can put:

— labels:
    module: if_mib
  targets:
    — foo
    — bar

— labels:
    module: if_mib_secret
  targets:
    — baz
    — qux

Hemedi Salim

unread,

Mar 1, 2022, 6:58:48 PM3/1/22

to Brian Candler, Prometheus Users

Hi 

Thanks for the reply.

error collecting metric Desc{fqName: «snmp_error», help: «Error scraping target», constLabels: {}, variableLabels: []}: error getting target x.x.x.x: request timeout (after 3 retries)

and the on the prometheus target shows:

image.png

just few questions:

do those changes have to be done in snmp generator ? and then generate a snmp.yml? or it can be added straight away in snmp.yml?

What should I need to add, if for example the switch snmp version is V3?

Is it possible to have more than one string for snmp authentication in snmp.yml?

Thanks

Hemedi Salim

unread,

Mar 1, 2022, 7:14:16 PM3/1/22

to Brian Candler, Prometheus Users

also, if I edit generator.yml  please which part exactly on generator.yml need to be duplicated?  

generator.yml

modules:

  # Default IF-MIB interfaces table with ifIndex.

  if_mib:

    walk: [sysUpTime, interfaces, ifXTable]

    version: 2  # SNMP version to use. Defaults to 2.

    auth:

      # Community string is used with SNMP v1 and v2. Defaults to «public».

      community: aspire-lan

    lookups:

      — source_indexes: [ifIndex]

        lookup: ifAlias

      — source_indexes: [ifIndex]

        # Uis OID to avoid conflict with PaloAlto PAN-COMMON-MIB.

        lookup: 1.3.6.1.2.1.2.2.1.2 # ifDescr

      — source_indexes: [ifIndex]

        # Use OID to avoid conflict with Netscaler NS-ROOT-MIB.

        lookup: 1.3.6.1.2.1.31.1.1.1.1 # ifName

    overrides:

      ifAlias:

        ignore: true # Lookup metric

      ifDescr:

        ignore: true # Lookup metric

      ifName:

        ignore: true # Lookup metric

      ifType:

        type: EnumAsInfo

# Cisco Wireless LAN Controller

  cisco_wlc:

    walk:

      — interfaces

      — ifXTable

      — 1.3.6.1.4.1.14179.2.1.1.1.38   # bsnDot11EssNumberofMobileStations

      — 1.3.6.1.4.1.14179.2.2.2.1.2    # bsnAPIfType

      — 1.3.6.1.4.1.14179.2.2.2.1.4    # bsnAPIfPhyChannelNumber

      — 1.3.6.1.4.1.14179.2.2.2.1.15   # bsnApIfNoOfUsers

      — 1.3.6.1.4.1.14179.2.2.6.1      # bsnAPIfDot11CountersTable

      — 1.3.6.1.4.1.14179.2.2.13.1.3   # bsnAPIfLoadChannelUtilization

      — 1.3.6.1.4.1.14179.2.2.15.1.21  # bsnAPIfDBNoisePower

    lookups:

      — source_indexes: [bsnDot11EssIndex]

        lookup: bsnDot11EssSsid

        drop_source_indexes: true

      — source_indexes: [bsnAPDot3MacAddress]

        lookup: bsnAPName

        drop_source_indexes: true

    overrides:

      ifType:

        type: EnumAsInfo

# APC/Schneider UPS Network Management Cards

………………..

……………..

…………..

Brian Candler

unread,

Mar 1, 2022, 7:27:34 PM3/1/22

to Prometheus Users

just few questions:

do those changes have to be done in snmp generator ? and then generate a snmp.yml? or it can be added straight away in snmp.yml?

I apply them straight away to snmp.yml

What should I need to add, if for example the switch snmp version is V3?

Example:

if_mib3:
  <<: *if_mib
  version: 3
  auth:
    security_level: authPriv
    username: bla
    auth_protocol: SHA
    password: blabla
    priv_protocol: AES
    priv_password: blablabla

Is it possible to have more than one string for snmp authentication in snmp.yml?

Yes, but you need to instantiate a separate module for each one:

if_mib_foo:
  <<: *if_mib
  version: 2
  auth:
    community: tcpip123

if_mib_bar:
  <<: *if_mib
  version: 2
  auth:
    community: xyzzy

…etc

Brian Candler

unread,

Mar 1, 2022, 7:33:07 PM3/1/22

to Prometheus Users

also, if I edit generator.yml  please which part exactly on generator.yml need to be duplicated?  

Every module that you want to apply a different community string to.  e.g.

There you’ve put already changed the community to «aspire-lan».  If you want to run with another community as well, then either duplicate the *whole* section as if_mib_foo, with everything identical except the auth section; or use the YAML trick I showed before, like this.

modules:

  # Default IF-MIB interfaces table with ifIndex.

    walk: [sysUpTime, interfaces, ifXTable]

    version: 2  # SNMP version to use. Defaults to 2.

    auth:

      # Community string is used with SNMP v1 and v2. Defaults to «public».

      community: aspire-lan

    lookups:

      — source_indexes: [ifIndex]

        lookup: ifAlias

      — source_indexes: [ifIndex]

        # Uis OID to avoid conflict with PaloAlto PAN-COMMON-MIB.

        lookup: 1.3.6.1.2.1.2.2.1.2 # ifDescr

      — source_indexes: [ifIndex]

        # Use OID to avoid conflict with Netscaler NS-ROOT-MIB.

        lookup: 1.3.6.1.2.1.31.1.1.1.1 # ifName

    overrides:

      ifAlias:

        ignore: true # Lookup metric

      ifDescr:

        ignore: true # Lookup metric

      ifName:

        ignore: true # Lookup metric

      ifType:

        type: EnumAsInfo


  <<: *if_mib
  version: 2
  auth:
    community: BlahBlah123

You’ll have to repeat this as many times as you have different community strings.  And if you want multiple auths for for cisco_wlc, then you’ll need to do the same for that as well.

Re-run the generator, of course, with this new input.

Hemedi Salim

unread,

Mar 3, 2022, 7:47:51 PM3/3/22

to Brian Candler, Prometheus Users

Thanks very much Brian. got it working 👍

You received this message because you are subscribed to the Google Groups «Prometheus Users» group.
To unsubscribe from this group and stop receiving emails from it, send an email to prometheus-use…@googlegroups.com.

Host operating system: output of uname -a

Linux hostname 4.19.0-18-amd64 #1 SMP Debian 4.19.208-1 (2021-09-29) x86_64 GNU/Linux

mysqld_exporter version: output of mysqld_exporter --version

mysqld_exporter, version 0.13.0 (branch: v0.13.0, revision: 6125d4c90fa72487e7c0cf1905ea3c92260f2828)
build user:
build date: 2021-12-09T15:38:01+00:00
go version: go1.17.4
platform: linux/amd64

MySQL server version

10.5.13-MariaDB-1:10.5.13+maria~buster-log

mysqld_exporter command line flags

—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
—no-collect.info_schema.query_response_time
—collect.info_schema.userstats
—collect.info_schema.tables
—collect.slave_status
—web.listen-address=0.0.0.0:9104
—web.config.file=/etc/prometheus/web.yml

What did you do that produced an error?

Metrics are fetched by Prometheus

What did you expect to see?

No error from mysqld_exporter

What did you see instead?

From MariaDB error log:
ERROR 1055: ‘information_schema.processlist.HOST’ isn’t in GROUP BY : SELECT
user,
SUBSTRING_INDEX(host, ‘:’, 1) AS host,
COALESCE(command,») AS command,
COALESCE(state,») AS state,
count(*) AS processes,
sum(time) AS seconds
FROM information_schema.processlist
WHERE ID != connection_id()
AND TIME >= 0
GROUP BY user,SUBSTRING_INDEX(host, ‘:’, 1),command,state
ORDER BY null

This is triggered by collect.info_schema.processlist (https://github.com/prometheus/mysqld_exporter/blob/main/collector/info_schema_processlist.go#L31).

The SQL_MODE is set to «REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ONLY_FULL_GROUP_BY,ANSI,STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION» (which is expanded from «ANSI,TRADITIONAL,ONLY_FULL_GROUP_BY»)

If I do not set ONLY_FULL_GROUP_BY, the query works fine.

Interestingly, if I try to execute the query manually, I do not get an error, but only 2 warnings:

| Warning | 1052 | Column 'state' in group statement is ambiguous   |```

Cheers
Volker



Что это?
Ошибка 500 – это то, что препятствует открытию той или иной страницы сайта. Вместо ожидаемой, например, статьи, перед пользователем возникает фраза Internal Server Error 500. Она сообщает о проблемах ресурса с подключением к серверу.



Как исправить?
Устранить ошибку можно как со стороны пользователя сайта, так и его владельца. В первом случае способы не гарантируют на 100 %, что Error 500 моментально пропадает, но попробовать стоит. Больше возможностей в этом плане у собственника ресурса.

В статье рассказывается:

  1. Что значит код ошибки 500
  2. Основные причины возникновения ошибки 500
  3. Текст и внешний вид ошибки
  4. Советы по исправлению ошибки 500 для пользователя
  5. Рекомендации по исправлению ошибки 500 для владельца сайта
  6. Пройди тест и узнай, какая сфера тебе подходит:
    айти, дизайн или маркетинг.

    Бесплатно от Geekbrains

Значение 500 является кодом положения протокола НТТР. Из-за чего появляется ошибка 500? Происходит это потому, что случилась неисправность конфигурации сервера или пришёл сигнал о том, что компонент отказал. Когда возникает эта ошибка, программное обеспечение продолжает работать, но из-за серьёзных внутренних нарушений запросы обрабатываются некорректно.

Ошибка 500 значит, что пользовательский запрос неправильно переводится в действие. По этой причине возникают проблемы во время работы с сайтом. Нужно как можно скорее понять, из-за чего именно появилась ошибка, и устранить её.

Что значит код ошибки 500

Что значит код ошибки 500

Оповещение о том, что произошла ошибка 500, имеет текстовое описание. Наиболее частые варианты:

  • Ошибка 500.
  • Внутренняя ошибка сервера 500.
  • Ошибка 500 Internal Server Error.
  • Временная ошибка (500).
  • Внутренняя ошибка сервера.
  • 500 ошибка сервера.
  • Внутренняя ошибка HTTP 500.
  • Произошла непредвиденная ошибка.
  • HTTP status 500 internal server error (перевод ― HTTP статус 500 внутренняя ошибка сервера).

Скачать файл

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

Вероятность столкнуться с такой неприятностью есть при работе с любым веб-ресурсом, браузером или устройством. Главное, понимать, что эта ошибка, как и другие, которые начинаются на цифру 5, является промахом разработчиков или администратора сайта и вашей вины в этом нет.

Основные причины возникновения ошибки 500

Мы уже выяснили, что данная ошибка появляется, когда сервер не смог обработать запрос, совершённый пользователем, в результате чего человек не может открыть ресурс, а поисковые системы с ним взаимодействовать. Проблему обязательно нужно устранить, но для начала следует найти причину её появления, среди которых может быть:

  • Неправильный синтаксис файла .htaccess – это файл, в котором можно менять настройки при работе с веб-сервером Apache и корректировать его функционирование (управлять различными перенаправлениями, правами доступа к данным, опциями PHP, задавать собственные страницы ошибок и прочее).

Основные причины возникновения ошибки 500

Основные причины возникновения ошибки 500
  • Неполадки в сценариях сайта, которые отвечают за дополнительные возможности и визуальные эффекты.
  • Недостаточно оперативной памяти, чтобы выполнить скрипт.
  • Ошибки в коде CMS, системы управления наполнением ресурса. В большинстве случаев (80 %) причиной являются конфликтующие плагины.

Текст и внешний вид ошибки

Вы узнали, что означает ошибка 500, теперь пришло время перейти к более подробному разбору возможных причин её появления. Иногда разобраться с этим вопросом можно и без помощи специалиста.

Вид ошибки может отличаться. Это зависит от того, из-за чего она возникла. Наиболее распространенные причины можно узнать по тому, как отображается ошибка и какой текст её сопровождает.

Internal Server Error

Данный вид ошибки – сигнал о том, что есть проблемы с файлом .htaccess (к примеру, он был неправильно настроен). Чтобы понять, действительно ли дело в .htaccess, добавьте к его названию в конце цифру один. Сделать это поможет FTP-клиент (например, FileZilla) или файловый менеджер на вашем хостинге (в Timeweb есть подобный, и он очень простой в использовании). После этой манипуляции попробуйте заново открыть сайт. Если ошибка не выскочила, значит, вы нашли, из-за чего она появилась.

pdf иконка

Топ-30 самых востребованных и высокооплачиваемых профессий 2023

Поможет разобраться в актуальной ситуации на рынке труда

doc иконка

Подборка 50+ ресурсов об IT-сфере

Только лучшие телеграм-каналы, каналы Youtube, подкасты, форумы и многое другое для того, чтобы узнавать новое про IT

pdf иконка

ТОП 50+ сервисов и приложений от Geekbrains

Безопасные и надежные программы для работы в наши дни

Уже скачали 19536 pdf иконка

HTTP ERROR 500 или пустая страница

Подобное означает, что причина в сценариях сайта. Но надо уточнить насчёт пустой страницы, что это не только признак внутренней ошибки 500 в сервере.

Предлагаем детальнее разобраться с пустой страницей, обращаясь к инструментам разработчика. Через браузерную панель пользователь получает уведомления об ошибках и другую информацию (время запуска сайта, html-элементы и прочее).

Каким образом открывается панель разработчика? Для начала нажмите F12 (это подходит для большинства браузеров на Windows). Если вы пользуетесь Google Chrome на macOS, то вам нужно использовать сочетание кнопок Cmd+Opt+J. В случае Safari на macOS нужна комбинация Cmd+Opt+C, но перед тем, как её нажать, включите «Меню разработки» в разделе «Настройки» -> «Продвинутые».

Есть ещё один способ открыть панель разработчика: кликнуть правой кнопкой мыши в любом месте сайта и в открывшемся контекстном меню выбрать «Посмотреть код». После этого откройте вкладку «Сеть» (или Network) и посмотрите, какое значение указано в строке «Статус». Если дело в ошибке 500, то будет стоять эта цифра.

Советы по исправлению ошибки 500 для пользователя

Для начала расскажем, на что лучше не тратить своё время. Данная ошибка связана с сервером, поэтому делать что-то со стороны клиента (перезагружать роутер, менять браузер, переустанавливать программу) смысла нет.

  • Заново откройте сайт

Ошибка 500 может появиться не только из-за серьёзных проблем с сервером, но и по причине временной перегрузки сайта. Перезагрузить страницу можно с помощью клавиш: на ПК — F5, ноутбуке — Fn + F5, на устройствах от Apple — Cmd + R.

Ошибка 400: причины и способы устранения

Читайте также

  • Очистите кэш и cookies браузера

Кэш и cookies нужны для того, чтобы при повторном открытии страницы не нужно было заново прогружать все данные, то есть они сохраняют информацию с первого посещения, за счёт чего в следующий раз сайт открывается быстрее.

Советы по исправлению ошибки 500 для пользователя

Советы по исправлению ошибки 500 для пользователя

Если на сервере была ошибка, то даже если её уже устранили, из-за кэша может открываться старая версия страницы с этой неполадкой.

Если ничего из этого вам не помогло, то остаётся ждать, когда владелец решит эту проблему, и вернуться на сайт позже.

  • Обратитесь к владельцу сайта

Когда, например, в интернет-магазине часто всплывает ошибка 500, можно связаться с его владельцем. Информация с контактными данными, как правило, находится либо внизу страницы, либо в разделе «Контакты».

Чаще всего информация закрытая, но есть форма для обратной связи. Однако не факт, что вы получите ответ. Если нужные данные вы не нашли или ответа так и нет, можно воспользоваться такими вариантами: через Whois, хостинг-провайдера или регистратора домена, с помощью сторонних сервисов.

Рекомендации по исправлению ошибки 500 для владельца сайта

Стоит учитывать большое количество факторов: движок, на котором работает ваш сайт, на каком он хостинге расположен, какие недавние изменения были внесены. Как бы там ни было, зачастую универсальные методы убирают ошибку 500. Желательно попробовать все варианты, которые подойдут под специфику вашего ресурса.

  • Устраните неполадки в синтаксисе файла .htaccess

Выше мы уже рассказывали, как понять, в нём ошибка или нет. Попробуйте изменить имя документа, к примеру, на .htaccess_, и заново открыть сайт. Если ошибка не вылезла, значит, дело всё-таки в .htaccess. Проанализируйте синтаксис документа на наличие лишних символов или опечаток. Если вы сохраняли прошлую версию настроек, то надо попробовать её вернуть, чтобы проверить, будет ли ошибка.

В некоторых случаях может помочь закомментирование строки Options в .htaccess – вставить # в её начале. Если ничего не поменялось, проделайте то же самое с другими строками, а потом по очереди убирайте # и смотрите на результат.

После изменения файла .htaccess надо проверить, сохранилось ли оно. Иногда хостер может выставить на документ права, которые мешают его менять. В этой ситуации вы можете скачать файл .htaccess к себе на устройство, открыть и отредактировать его в любом текстовом документе и залить обратно, заменив старую версию.

pdf иконка

Точный инструмент «Колесо компетенций»

Для детального самоанализа по выбору IT-профессии

pdf иконка

Список грубых ошибок в IT, из-за которых сразу увольняют

Об этом мало кто рассказывает, но это должен знать каждый

doc иконка

Мини-тест из 11 вопросов от нашего личного психолога

Вы сразу поймете, что в данный момент тормозит ваш успех

Регистрируйтесь на бесплатный интенсив, чтобы за 3 часа начать разбираться в IT лучше 90% новичков.

Только до 13 февраля

Осталось 17 мест

  • Обновите РНР

Версии РНР, которые уже устарели, не поддерживают обновления безопасности, хуже работают и из-за них может быть некорректная работа плагинов и сценариев.

Обновите РНР

Обновите РНР

Может, для того, чтобы ваш сайт работал без перебоев, вам надо просто обновить РНР.

  • Настройте права для CGL-скриптов

Одним из методов устранения ошибки 500 на сайте является выставление прав для CGL-скриптов. Если такие сценарии у вас есть, то их папки и файлы должны иметь такое право доступа: 0755 (drwxr-xr-x), которое даёт возможность менять их только владельцу, а остальные могут их лишь открывать и активировать. Когда на скриптах стоит другое право доступа, это может привести к появлению ошибки 500.

  • Проверьте файлы CGL-скриптов

У правильных сценариев окончание строк в формате Unix (n), а не Windows (rn). Для сохранения корректного варианта нужно загружать код (в большинстве хостингов) по FTP в режиме ASCII. Если вы не помните, какие ранее были настройки, заново добавьте сценарии и посмотрите, появится или нет ошибка 500. К тому же CGL-скрипты могут быть причиной неправильных HTTP‑заголовков ответа. В данном варианте вы сможете заметить ошибку в логах.

  • Проверьте плагины

Причина может скрываться в плагинах, которые вы недавно установили.

Проверьте плагины

Проверьте плагины

Нередко встречается такое, что отдельные элементы сайта или плагины не могут работать совместно друг с другом. Данная проблема становится причиной не только того, что сайт выдаёт ошибку 500, но и возникновения других неполадок на сервере. Если модели были установлены или обновлены не так давно, то можно попробовать их отключить через панель администратора. Есть вероятность, что после этого могут всплыть другие неполадки, но если ошибка 500 исчезла, значит, дело было в конфликте плагинов или компонентов.

  • Проверьте лог ошибок

Более точный анализ проводится с помощью логов. Если объяснять простым языком, то лог – это своеобразный журнал, в котором хранится информация об ошибках, направленных запросах, подключениях, действий с документами и так далее. Так как данных в логах очень много, они делятся на категории, чтобы было проще найти то, что нужно.

Если в последнее время вы как-то меняли сайт, то это могло стать причиной появления ошибки с кодом состояния 500. Зайдите в логи и проверьте, нет ли там информации о проблемах. Если ошибки высветились, то надо их изучить и отменить последние изменения.

Как правило, хостеры предоставляют информацию о том, где найти логи и как их открыть с панели управления. Данные об этом есть в разделе помощи FAQ (frequently asked questions — часто задаваемые вопросы) на сайте хостинга.

  • Оптимизируйте сценарии

Если написанные сценарии долго грузятся или вообще не могут запуститься из-за нехватки ресурсов, проанализируйте их содержимое. Может, код надо оптимизировать, чтобы он стал легче и быстрее загружался. Нередко сценариям недостаточно ресурсов при работе с виртуальным хостингом. У них есть жёсткий лимит на память, чтобы каждый пользователь имел равные возможности во время пребывания на выбранном сайте.

Разделите скрипты на части и проверьте каждый на эффективность их деятельности. Если вы обнаружили в коде много ненужных вызовов либо необходимый объём памяти постоянно растёт, нужно обязательно проработать эти моменты.

  • Увеличьте объём оперативной памяти сервера

Встречаются ситуации, когда даже после оптимизации сценариев они продолжают занимать много памяти. Чтобы решить эту проблему, придётся начать пользоваться более дорогим пакетом обслуживания, который предлагает хостинг.

Объём оперативной памяти сервера

Объём оперативной памяти сервера

Либо, если есть вариант увеличить объём памяти, прибегнуть к нему. К тому же вы не будете платить за те функции, которые не нужны вашему ресурсу.

Если вы испробовали все возможные варианты, но ничего не помогло, лучше обратиться за помощью к службе технической поддержки. Укажите время, когда вылезла ошибка, и подробно расскажите, что пытались предпринять для её устранения. Специалисты подробно изучат настройки сайта и, если потребуется, обратятся к управляющим сервера на стороне хостинг-провайдера.

Что такое скрипт: применение, языки написания

Читайте также

Ошибка выполнения запроса 500 является обобщенным кодом состояния НТТР, который говорит о том, что на сервере произошла какая-то неполадка, но более точно описать проблему сервер не может. Так что первым делом нужно узнать, что послужило причиной возникновения ошибки, и только после этого заниматься её устранением.

В статье мы расскажем, как исправить ошибку (код состояния) 500 со стороны пользователя и администратора сайта, а также подробно разберём, что такое ошибка запроса 500.

Что такое внутренняя ошибка сервера 500

Код ошибки 5хх говорит о том, что браузер отправил запрос корректно, но сервер не смог его обработать. Что значит ошибка 500? Это проблема сервера, причину которой он не может распознать.

Сообщение об ошибке сопровождается описанием. Самые популярные варианты:

  • Внутренняя ошибка сервера 500,
  • Ошибка 500 Internal Server Error,
  • Временная ошибка (500),
  • Внутренняя ошибка сервера,
  • 500 ошибка сервера,
  • Внутренняя ошибка HTTP 500,
  • Произошла непредвиденная ошибка,
  • Ошибка 500,
  • HTTP status 500 internal server error (перевод ― HTTP статус 500 внутренняя ошибка сервера).

Дизайн и описание ошибки 500 может быть любым, так как каждый владелец сайта может создать свою версию страницы. Например, так выглядит страница с ошибкой на REG.RU:

Как ошибка 500 влияет на SEO-продвижение

Для продвижения сайта в поисковых системах используются поисковые роботы. Они сканируют страницы сайта, проверяя их доступность. Если страница работает корректно, роботы анализируют её содержимое. После этого формируются поисковые запросы, по которым можно найти ресурс в поиске.

Когда поисковый робот сканирует страницу с ошибкой 500, он не изменяет её статус в течение суток. В течение этого времени администратор может исправить ошибку. Если робот перейдёт на страницу и снова столкнётся с ошибкой, он исключит эту страницу из поисковой выдачи.

Проверить, осталась ли страница на прежних позициях, можно с помощью Google Search Console. Если робот исключил страницу из поисковой выдачи, её можно добавить снова.

Код ошибки 500: причины

Если сервер вернул ошибку 500, это могло случиться из-за настроек на web-хостинге или проблем с кодом сайта. Самые распространённые причины:

  • ошибки в файле .htaccess,
  • неподходящая версия PHP,
  • некорректные права на файлы и каталоги,
  • большое количество запущенных процессов,
  • большие скрипты,
  • несовместимые или устаревшие плагины.

Решить проблему с сервером можно только на стороне владельца веб-ресурса. Однако пользователь тоже может выполнить несколько действий, чтобы продолжить работу на сайте.

Что делать, если вы пользователь

Если на определённом ресурсе часто возникает ошибка 500, вы можете связаться с владельцем сайта по инструкции.

Перезагрузите страницу

Удаленный сервер возвращает ошибку не только из-за серьёзных проблем на сервере. Иногда 500 ошибка сервера может быть вызвана небольшими перегрузками сайта.

Чтобы устранить ошибку, перезагрузите страницу с помощью сочетания клавиш:

  • на ПК — F5,
  • на ноутбуке — Fn + F5,
  • на устройствах от Apple — Cmd + R.

Обратите внимание! Если вы приобретаете товары в интернет-магазине и при оформлении заказа появляется 500 Internal Server Error (перевод — внутренняя ошибка сервера), при перезагрузке страницы может создаться несколько заказов. Поэтому сначала проверьте, оформился ли ваш предыдущий заказ. Если нет, попробуйте оформить заказ заново.

Очистите кэш и cookies браузера

Кэш и cookies сохраняют данные посещаемых сайтов и данные аутентификаций, чтобы в будущем загружать веб-ресурсы быстрее. Если на ресурсе уже был статус ошибки 500, при повторном входе на сайт может загружаться старая версия страницы с ошибкой из кэша, хотя на самом деле страница уже работает. Очистить кэш и куки браузера вам поможет инструкция.

Если ни одно из этих действий не решило проблему, значит, некорректно работает сам сервер сайта. Вернитесь на страницу позже, как только владелец решит проблему.

Что делать, если вы владелец сайта

В большинстве случаев устранить проблему может только владелец сайта. Как правило, ошибка связана с проблемами в коде. Реже проблемы могут быть на физическом сервере хостинг-провайдера.

Ниже рассмотрим самые популярные причины и способы решения.

Ошибки в файле .htaccess

Неверные правила в файле .htaccess — частая причина возникновения ошибки. Чтобы это проверить, найдите .htaccess в файлах сайта и переименуйте его (например, в test). Так директивы, прописанные в файле, не повлияют на работу сервера. Если сайт заработал, переименуйте файл обратно в .htaccess и найдите ошибку в директивах. Если вы самостоятельно вносили изменения в .htaccess, закомментируйте новые строки и проверьте доступность сайта.Также может помочь замена текущего файла .htaccess на стандартный в зависимости от CMS.

Найти директиву с ошибкой можно с помощью онлайн-тестировщика. Введите содержимое .htaccess и ссылку на сайт, начиная с https://. Затем нажмите Test:


Произошла непредвиденная ошибка

На экране появится отчёт. Если в .htaccess есть ошибки, они будут выделены красным цветом:


500 ошибка nginx

Активирована устаревшая версия PHP

Устаревшие версии PHP не получают обновления безопасности, работают медленнее и могут вызывать проблемы с плагинами и скриптами. Возможно, для работы вашего веб-ресурса нужна более новая версия PHP. Попробуйте сменить версию PHP на другую по инструкции.

Установлены некорректные права на файлы и каталоги сайта

В большинстве случаев корректными правами для каталогов являются «755», для файлов — «644». Проверьте, правильно ли они установлены, и при необходимости измените права на файлы и папки.

Запущено максимальное количество процессов

На тарифах виртуального хостинга REG.RU установлены ограничения на количество одновременно запущенных процессов. Например, на тарифах линейки «Эконом» установлено ограничение в 18 одновременно запущенных процессов, на тарифах «+Мощность» ― 48 процессов. Если лимит превышен, новый процесс не запускается и возникает системная ошибка 500.

Такое большое число одновременных процессов может складываться из CRON-заданий, частых подключений с помощью почтовых клиентов по протоколу IMAP, подключения по FTP или других процессов.

Чтобы проверить количество процессов, подключитесь по SSH. Выполните команду:

ps aux | grep [u]1234567 |wc -l

Вместо u1234567 укажите ваш логин хостинга: Как узнать логин хостинга.

Чтобы посмотреть, какие процессы запущены, введите команду:

Вместо u1234567 укажите логин услуги хостинга.

Командная строка отобразит запущенные процессы:


Код ошибки 500

Где:

  • u1234567 — логин услуги хостинга,
  • 40522 — PID процесса,
  • S — приоритет процесса,
  • /usr/libexec/sftp-server — название процесса.

Процесс можно завершить командой kill, например:

Вместо 40522 укажите PID процесса.

Чтобы решить проблему, вы также можете:

  • увеличить интервал запуска заданий CRON,
  • ограничить количество IMAP-соединений в настройках почтового клиента. Подробнее в статье Ограничение IMAP-соединений,
  • проанализировать запущенные процессы самостоятельно или обратившись за помощью к разработчикам сайта.

Если вам не удалось самостоятельно устранить ошибку 500, обратитесь в техподдержку.

Скрипты работают слишком медленно

На каждом виртуальном хостинге есть ограничения на время выполнения скрипта. Если за установленное время скрипт не успевает выполниться, возникает ошибка сервера 500. Для решения проблемы обратитесь к разработчику сайта и оптимизируйте скрипты. Если оптимизировать нельзя, перейдите на более мощный вид сервера.

У пользователей VPS есть возможность увеличить максимальное использование оперативной памяти на процесс, но лучше делать скрипты меньшего размера.

Ошибка 500 на сайте, созданном на WordPress

WordPress предлагает много плагинов для создания хорошего сайта. Они значительно расширяют возможности CMS. Однако они же могут нарушать работу сайта и вызывать ошибку 500. Вызвать ошибку могут как недавно установленные плагины, так и старые.

Для начала проверьте, нужно ли обновить плагины. Часто устаревшие плагины перестают работать и вызывают проблемы работы сайта. Если все плагины обновлены, но 500 Internal Server Error остаётся, отключите все плагины, чтобы убедиться, что именно они мешают работе сайта. Как только станет понятно, что виноват один из плагинов, отключайте их по очереди, пока не найдёте тот, который нарушает работу сервера.


Как отключить плагин в WordPress

  1. 1.

  2. 2.

    Перейдите во вкладку «Плагины» ― «Установленные».

  3. 3.

    Нажмите Деактивировать у плагина, который, как вам кажется, повлиял на работу сайта:

Если все ваши действия не решили проблему или вы не уверены в своих технических знаниях, обратитесь к службе технической поддержки. Сообщите время обнаружения проблемы и опишите все действия, которые вы предприняли перед обращением. Специалисты сделают детальную проверку настроек вашего сайта и при необходимости обратятся к администраторам сервера на стороне хостинг-провайдера.

Понравилась статья? Поделить с друзьями:
  • Service tool v3400 ошибка 006
  • Service tool v3400 error code 009
  • Server returned error nxdomain
  • Service tool v3400 error 006
  • Server reset connection cisco packet tracer как исправить