Позади AWS ELB: Как получить реальный IP из "netstat"?
Я использую AWS Elastic Load Balancing (ELB)
перед 2 Linux веб-серверов. Но (исходя из моих требований) мне нужно знать реальные IP-адреса с точки зрения веб-серверов, особенно когда я использую netstat
,
Мне нужно знать количество входящих подключений с каждого IP-адреса (из NETSTAT), как в режиме реального времени. Так в основном в Linux (без ELB впереди), ниже netstat
команда отлично работает:
netstat -tn 2>/dev/null | grep :80
Но теперь я могу видеть только внутренние IP-адреса ELB; что делает все это довольно сложно.
Какое решение для этого, пожалуйста? Благодарю.
2 ответа
Вы можете получить исходный IP-адрес клиента из журналов доступа ELB и использовать EMR с Hive для подсчета количества запросов клиента с одного и того же IP-адреса.
Если вы предпочитаете более "ручные" способы: вы можете использовать tcpdump или ngrep и искать заголовок "x- forwarded -for" на своих веб-серверах.
Если вы хотите правильный путь: установите в своем приложении какую-либо регистрацию, регистрируйте запросы клиентов с заголовком x-forwarded-for.
Какой бы метод вы ни выбрали, вы можете установить агент журналов cloudwatch на своих компьютерах, чтобы отслеживать сгенерированные журналы. Этот агент заботится о ротации журналов, отправляя ваши журналы в AWS в виде потока (через kinesis за кулисами), а затем вы можете создавать метрики журналов, чтобы отслеживать все, что вам нравится в ваших журналах, например, количество соединений в режиме реального времени, и даже настроить сигналы тревоги на основе этого, если хотите. Затем вы можете создавать панели мониторинга с вашими метриками и иметь хорошую панель мониторинга, включающую ваши собственные метрики журнала.