Ведение журнала Stackdriver пропускает записи журнала - PullRequest
0 голосов
/ 05 марта 2019

Наша команда использует python для регистрации некоторых действий по доступу пользователей.

Мы создали как локальное ведение журнала, так и ведение журнала в облаке Google (Stackdriver) для захвата исключений.

Локальный журнал показывает 5записей

В журнале Stackdriver нашей команды показано 2 записи

Я также протестировал свой собственный журнал стека драйверов Google cloud.Он показывает 5 попыток.

Вот код:

local_logger = local_logging.getLogger(__name__)
local_logger.setLevel(local_logging.INFO)

handler = local_logging.FileHandler('Azure-user-access-audit-log.log')
handler.setLevel(local_logging.CRITICAL)


local_logging.Formatter.converter = time.gmtime
formatter = local_logging.Formatter('%(asctime)s | %(levelname)s | %(message)s')
handler.setFormatter(formatter)

local_logger.addHandler(handler)

os.environ["GOOGLE_APPLICATION_CREDENTIALS"]  = "my-credential.json"
logging_client = cloud_logging.Client()
log_name = 'Azure-user-access-audit-log'
cloud_logger = logging_client.logger(log_name)

............

   if item['subcriptionType'] == 'Hacker':
        user_log = str(item['cloudName'] + " - " + item['tenantId'] + " | " +
            item['subcriptionType'] + " " + item['principalName'] + " has access to " + item['subscriptionName'] + " as "
            + item['roleDefinitionName'])
        local_logger.critical(user_log)

        # The data to log to Google Cloud
        google_log_message = item['subcriptionType'] + " " + item['principalName'] + " has access to " + item['subscriptionName'] + " as " + item['roleDefinitionName']
        google_log_severity = 'CRITICAL'
        google_log_insert_id = item['cloudName'] + " - " + item['tenantId']
        print(google_log_message)
        print(google_log_severity)
        print(google_log_insert_id)

        # Writes the log entry
        # cloud_logger.log_text(str(google_log_message), severity = str(google_log_severity), insert_id = str(google_log_insert_id))
        #             # cloud_logger.log_struct({
        #             #     'subcriptionType': item['subcriptionType'],
        #             #     'principalName': item['principalName'],
        #             #     'subscriptionName': item['subscriptionName']
        #             # }, severity = str(google_log_severity), insert_id = str(google_log_insert_id))
        cloud_logger.log_text(str(google_log_message))

Если бы я добавил закомментированный кусок кода для серьезности и insert-id, ничего бы не произошло.Я почти уверен, что синтаксис был хорош.

Пожалуйста, помогите мне.Спасибо большое

1 Ответ

0 голосов
/ 30 апреля 2019

Вы используете insertId неправильно.API ведения журнала Stackdriver считает все записи журнала в одном проекте с одной и той же отметкой времени и с одинаковым insertId дубликатами, которые можно удалить .Все ваши insertId значения кажутся одинаковыми.Единственная причина, по которой вы видите две записи в журнале Stackdriver, а не одну, состоит в том, что две записи, проходящие через них, имеют разные временные метки.

Вы можете просто пропустить поле insertId.API установит его автоматически.

...